2015-10-14 113 views
0

我創建了asp.net web api項目。我需要添加授權或/和身份驗證。我讀過很多關於OAuth,SAML,JWT,HMAC等的內容,每次我看到作者都強調OAuth不是身份驗證,您需要將authN與authZ區分開來。我有點困惑,因爲我不明白:Web API:授權或/和認證

  1. 當我需要使用身份驗證(SSO,登錄名/密碼)和授權(OAuth,令牌)的API?
  2. 是HMAC,JWT授權還是認證?因爲他們已簽名,我可以將userid添加到此令牌中使用,如用戶標識
  3. authN工作流和authZ工作流之間的真正區別是什麼?

回答

1

的OAuth可以使用資源所有者許可(即客戶端獲取的訪問令牌提供用戶+密碼憑證)也可用來驗證用戶

產生的訪問令牌是你應該叫什麼授權,因爲它將包含像描述的權限,權限屏蔽或角色(這取決於你在你的解決方案中實現什麼樣的認證方案上)索賠信息。

A JWT(JSON Web Token)只是訪問令牌和任何其他相關信息的JSON表示。 JWT是一些認證結果的內容,可以用來對某些資源進行授權。由於JWT包含訪問令牌,如果您使用的是基本授權,則會爲您的請求添加Authorization標頭:Authorization: Bearer [your access token]

+0

所以客戶端必須經過身份驗證才能獲得access_token。但是,在頭中使用此令牌的資源請求只是授權。正確?關於jwt:我可以在SSO和OAuth中使用jwt嗎? – mtkachenko

+0

@ oblomov86這是正確的。關於SSO,它與OAuth無關。例如,如果您要爲Web實施SSO,並且所有網站都位於同一父域內(即您使用的是子域),則可以使用Cookie輕鬆共享訪問令牌 –

+0

如果應用程序爲modile設備承載access_tokens是最好的選擇? – mtkachenko