2017-03-06 186 views
2

我正在開發的一個項目包含一個Web API,一個單獨的頁面反應應用程序和一個移動應用程序。從每個客戶端,用戶需要提供他們的用戶名和密碼才能訪問Web API的受保護部分。我設置了Identity Server 4身份驗證服務器,該服務器使用我自己的IProfileServiceIResourceOwnerPasswordValidator接口,因爲我使用的是ASP.NET Core Identity。這允許Identity Server訪問ASP.NET Core Identity UserManager,RoleManagerSignInManagers以確定提供的用戶名和密碼是否有效。Identity Server 4和ASP.NET Core Identity

我一直在使用的授予類型是「ResourceOwnerPassword」類型。我還沒有完全將授權集成到單頁面應用程序中,但是我可以將用戶的用戶名和密碼傳遞給身份服務器,並且會生成一個令牌,以便將其添加到API請求的標題中。

我已經做了關於Identity Server和相關技術的更多研究,因爲我對所有這些都是新手。似乎不希望使用ResourceOwnerPassword授權類型。從我可以告訴它看起來應該使用隱式授權類型,但我不完全理解用戶名和密碼如何適應該流。有沒有人有任何洞察到我應該使用哪種類型?我所描述的系統只能使用ResourceOwnerPassword授權類型嗎?

回答

4

資源所有者密碼交付式了這本關於它的IdentityServer文檔:

資源所有者密碼交付式可通過發送用戶名和密碼,以請求對 代表用戶令牌標記 端點。這就是所謂的「非交互式」認證,一般不建議使用 。

有可能是爲特定的舊或第一方整合 場景,在這筆款項的類型是非常有用的原因,但一般 建議是使用像隱含的交互式流或混合 用戶身份驗證。

(重點是我的)

所有其他流量包括重定向:用戶點擊登錄你的網站,會被重定向到一個身份的服務器登錄頁面,相反,他們有進入他們的憑據,然後重定向回您的原始網頁。

例如,使用您的Google帳戶登錄其他網站也是如此。谷歌不希望你輸入用戶名和密碼到你自己的站點,因爲你可以竊取它們,這就是爲什麼資源所有者密碼授權類型不鼓勵的原因。 但是,如果您正在進行第一方整合(即網站是您的,並且您相信自己的用戶在您的網站上輸入密碼),那麼我不會看到問題所在。

您應該閱讀(並查看示例)其他流/授權類型。他們肯定有自己的位置,我並沒有解僱他們,但如果你正在進行第一方整合,那麼做什麼應該沒問題。