在客户端之间共享访问令牌

时间:2017-10-16 21:24:44

标签: identityserver4

我有一个使用隐式流程对Identity Server 4进行身份验证的应用程序。该应用程序分为两个独立的.net核心应用程序。一个应用程序处理后端,另一个应用程序处理前端。

后端和前端共享相同的范围,api名称和权限设置。

我将与第三方编写集成。我们的后端应用程序将调用第三方应用程序。我们需要确保对第三方应用程序的调用进行身份验证。我想分享后端应用程序从前端收到的访问令牌,并将其发送给第三方应用程序。我不太确定这样做的设置。

我认为我可以向Identity Server添加一个新客户端,并仅使用第三方所需的范围进行设置。但在我当地的测试中,我无法让它发挥作用。我收到错误IDX10804无法从... /。获知配置/熟知/ openid-configuration - 发生安全性错误。

我的配置如下:

            new Client
            {
                ClientId = "thirdPartyClient",
                ClientName = "thirdPartyClient",
                AllowedGrantTypes = GrantTypes.HybridAndClientCredentials,
                ClientSecrets =
                {
                    new Secret("secret".Sha256())
                },
                AllowedScopes =
                {
                    IdentityServerConstants.StandardScopes.OpenId,
                    IdentityServerConstants.StandardScopes.Profile,
                    IdentityServerConstants.StandardScopes.Email
                },

                AllowOfflineAccess = true,
                AllowAccessTokensViaBrowser = true,
                RequireConsent = false
            },

            new Client
            {
                ClientId = "myapplication",
                ClientName = "myapplication",
                AllowedGrantTypes = GrantTypes.Implicit,
                ClientSecrets =
                {
                    new Secret("secret".Sha256())
                },


                RedirectUris = { "https://.../callback.html" },
                PostLogoutRedirectUris = { "https://.../index.html"
                AllowedCorsOrigins = { "https://..." },
                AllowedScopes =
                {
                    IdentityServerConstants.StandardScopes.OpenId,
                    IdentityServerConstants.StandardScopes.Profile,
                    IdentityServerConstants.StandardScopes.Email,
                    IdentityServerConstants.StandardScopes.Address,
                    "myscope",
                },

                AllowOfflineAccess = true,
                AllowAccessTokensViaBrowser = true,
                RequireConsent = false
            }

我能以正确的方式解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您尚未为客户thirdPartyClient添加重定向uri。如果没有重定向,uri客户端将无效。

  

RedirectUris

     

指定允许的URI以将令牌或授权码返回到

如果您使用禁用我的代码打开detailed logging。您可以看到错误日志以找到实际原因