2017-04-04 26 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