Identityserver4与ADFS 4.0,无法获取Userinfo或声明

时间:2017-02-10 09:28:30

标签: adfs openid-connect identityserver4

我尝试配置我的Identityserver4以将ADFS 4.0用作外部提供程序。 我已将其配置为:

            app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme
            });

            app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
            {

                ClientId = "60b3d106-d155-4f9f-ba75-84b8078829fa",
                AuthenticationScheme = "oidc",
                PostLogoutRedirectUri = "http://localhost:5000",
                DisplayName = "ADFS TEST Domain",
                MetadataAddress = "https://srv2016dc01.test.local/adfs/.well-known/openid-configuration",
                SaveTokens = true,
                GetClaimsFromUserInfoEndpoint = true
            });

似乎工作,因为我可以登录并获得一些索赔: Claims get back from ADFS

但看起来不会调用Userinfo端点...... 否则,可能会有更多声明,我无法在ADFS服务器的DEbug日志中看到对Userinfo端点的调用。

我也尝试在Code中调用Userinfo Endpoint,就像在这个链接中一样: ASP.NET Identity (with IdentityServer4) get external resource oauth access token

但是"等待_signInManager.UpdateExternalAuthenticationTokensAsync(info);"我没有得到access_token,只有id_token ......

是否有人在Identityserver4上使用ADFS 4.0或至少与任何其他外部OpenIdConnect服务器有一个工作示例?

有没有其他方法可以从Userinfo端点获取所有信息?

我需要从经过身份验证的用户获取Group Memeberships作为角色声明,以获取WebApi资源的授予权限。

1 个答案:

答案 0 :(得分:2)

如果我设置"令牌id_token"作为选项中的ResponseType值,我将获得令牌! ResponseType =" code id_token"

如果access_token可用,将调用UserInfo端点。

但是现在我将从Userinfo端点获得401错误。 无论如何......通过添加

解决了这个问题
ResponseType = "code id_token"

到OpenIdConnectOptions