.net core 不带重定向的IdentityServer4

.net core 不带重定向的IdentityServer4,.net-core,identityserver4,.net Core,Identityserver4,我正在实现IdentityServer4作为身份验证服务 将使用此应用程序的客户端是Angular应用程序。从我看到的所有示例中,客户机被重定向到identity server上托管的页面,该页面随后返回给客户机 为了用户体验,我想让用户一直在我的页面上。这就引出了几个问题: identity server UI能否显示在站点内的DIV或iframe中?我猜iframe有点不受欢迎 如果无法执行上述操作,是否可以在客户端应用程序而不是identity server上托管登录UI 我想这对用户

我正在实现IdentityServer4作为身份验证服务

将使用此应用程序的客户端是Angular应用程序。从我看到的所有示例中,客户机被重定向到identity server上托管的页面,该页面随后返回给客户机

为了用户体验,我想让用户一直在我的页面上。这就引出了几个问题:

  • identity server UI能否显示在站点内的DIV或iframe中?我猜iframe有点不受欢迎

  • 如果无法执行上述操作,是否可以在客户端应用程序而不是identity server上托管登录UI


  • 我想这对用户体验小组来说更像是一个问题,但我认为将用户保留在站点内会带来更好的用户体验,而不是完全重定向用户体验?

    我已经看到IdentityServer4项目配置为与SPA一起工作,尽管我没有想到这里的所有细节

    看看这篇文章:

    为用户定义基于浏览器的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。大概,您的路由将从那里接管。

    用户体验问题取决于许多事情,用户体验必须考虑安全因素

    如果您完全拥有客户端和identity server,则可以使用
    ResourceOwnerPasswordFlow
    ,它不涉及重定向,允许您的客户端使用用户名/密码并使用它们获取访问令牌

    但是,如果您不拥有客户端和/或不信任它的凭据,则不建议使用这种流。想象一下,一个网站将其登录过程委托给Google/Facebook之类的东西。。。作为身份(Google/Facebook)的所有者,你真的不希望你的客户在某个随机网站上输入密码。相反,您可以使用重定向流来呈现一个熟悉且可信的URL,客户更愿意将其详细信息输入其中


    因此,重定向的问题并不是简单的“它提供了糟糕的用户体验”,因为在许多情况下,如果重定向带来了增强的安全感,那么包含重定向是更好的用户体验

    如果您有多个客户端应用程序,这和RO不会给您SSO。答案中的链接已失效-“404(未找到)”。