ADr*_*ger 7 .net-core identityserver4
我正在将IdentityServer4用作身份验证服务。
将使用此客户端的是Angular应用程序。从所有示例中,我已经看到客户端被重定向到身份服务器上托管的页面,该页面之后将返回给客户端。
为了获得用户体验,我希望一直将用户保持在我的页面上。因此,这引出了两个问题:
身份服务器UI可以显示在站点的DIV或iframe中吗?我猜iframe有点皱眉?
如果上述方法不可行,是否可以在客户端应用程序而非身份服务器上托管登录UI?
我想对于UX小组来说,这更是一个问题,但我会认为,将用户留在站点中会带来更好的用户体验,而不是完全重定向他们?
谢谢
UX问题取决于许多因素,并且必须考虑安全性来限制UX。
如果您完全拥有客户端和身份服务器,则可以使用ResourceOwnerPasswordFlow不涉及重定向的,并允许客户端获取用户名/密码并使用它们获取访问令牌。
但是,如果您不拥有客户端和/或不使用凭据信任它,则不建议使用这种流程。想象一下这样一种情况,一个网站将其登录过程委托给Google / Facebook之类的身份...作为身份(Google / Facebook)的所有者,您确实不希望您的客户在某个随机网站中输入密码。取而代之的是,您将使用重定向流来呈现一个熟悉且受信任的URL,客户将更愿意在其中输入其详细信息。
因此,重定向的问题不是一个简单的“给用户带来糟糕的用户体验”,因为在很多情况下,如果重定向带来了增强的安全感,那么它是一个更好的用户体验。
我见过配置为与 SPA 一起使用的 IdentityServer4 项目,尽管我不知道这里的所有细节。
查看这段文档:
定义基于浏览器的 JavaScript 客户端(例如 SPA)以进行用户身份验证、委托访问和 API 该客户端使用所谓的隐式流程从 JavaScript 请求身份和访问令牌:
Run Code Online (Sandbox Code Playgroud)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。据推测,您的路由将从那里接管。
| 归档时间: |
|
| 查看次数: |
2697 次 |
| 最近记录: |