2017-04-04 71 views
1

我正在實現IdentityServer4作爲我的身份驗證服務。IdentityServer4無重定向

將使用該客戶端是一個角度應用程序。從我見過的所有例子中,客戶端被重定向到身份服務器上的一個頁面,該頁面在返回給客戶端之後返回給客戶端。

對於用戶的體驗,我想保持我的用戶頁面上的全部時間。因此,這導致了幾個問題:

  1. 身份服務器UI可以顯示在網站內的DIV或iframe中嗎?我猜iframe有點皺眉了?

  2. 如果上述是不可能的,是有可能主機上的客戶端應用程序,而不是身份服務器的登錄界面?

我想這是更多的UX組的一個問題,但我會想到的是,在現場保持用戶中會帶來更好的用戶體驗,而不是完全重定向他們?

感謝

回答

0

我見過配置了水療中心,工作IdentityServer4項目,雖然我沒有所有的細節在這裏把我的頭頂部。

退房這塊documentation的:

用於用戶 認證定義基於瀏覽器的JavaScript客戶端(例如SPA)和授予的訪問和API該客戶端使用這樣 稱爲隱式流動以請求身份從 JavaScript的訪問令牌:

var jsClient = new Client { 
ClientId = "js", 
ClientName = "JavaScript Client", 
ClientUri = "http://identityserver.io", 

AllowedGrantTypes = GrantTypes.Implicit, 
AllowAccessTokensViaBrowser = true, 

RedirectUris =   { "http://localhost:7017/index.html" }, 
PostLogoutRedirectUris = { "http://localhost:7017/index.html" }, 
AllowedCorsOrigins =  { "http://localhost:7017" }, 

AllowedScopes = 
{ 
    IdentityServerConstants.StandardScopes.OpenId, 
    IdentityServerConstants.StandardScopes.Profile, 
    IdentityServerConstants.StandardScopes.Email, 

    "api1", "api2.read_only" 
} }; 

你可以看到所有重定向回到同一URL。據推測,你的路線將從那裏接管。

3

的UX問題取決於很多的東西,UX必須通過安全考慮得到鍛鍊。

如果您完全擁有客戶端和身份服務器,則可以使用不涉及重定向的ResourceOwnerPasswordFlow,並允許您的客戶端獲取用戶名/密碼並使用它們獲取訪問令牌。

這種流動但如果你沒有自己的客戶端,和/或不與憑證信任它,不建議使用。想象一下,一個網站將其登錄過程委託給Google/Facebook之類的情況......作爲身份(Google/Facebook)的擁有者,您真的不希望您的客戶將自己的密碼輸入到某個隨機網站。相反,您可以使用重定向流來呈現一個熟悉且可信的網址,客戶可以更快樂地輸入他們的詳細信息。

所以重定向的問題不是一個簡單的「它會帶來壞UX」,因爲在許多情況下,它是一個更好的UX如果與它帶來了增強的安全意識,以重定向涉及。

+0

如果您有多個客戶端應用程序,則此和RO不會爲您提供SSO。 – Lutando