我尝试配置我的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资源的授予权限。
答案 0 :(得分:2)
如果我设置"令牌id_token"作为选项中的ResponseType值,我将获得令牌! ResponseType =" code id_token"
如果access_token可用,将调用UserInfo端点。
但是现在我将从Userinfo端点获得401错误。 无论如何......通过添加
解决了这个问题ResponseType = "code id_token"
到OpenIdConnectOptions