gpt4 book ai didi

asp.net-mvc - 无法从 Identity Server 3 获取用户信息

转载 作者:行者123 更新时间:2023-12-02 13:32:22 26 4
gpt4 key购买 nike

我正在尝试关注this使用混合流客户端创建 Identity Server 的教程。一切都很好,直到我达到通过用户信息端点获取用户信息的程度。

Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthorizationCodeReceived = async n =>
{
var userInfoClient = new UserInfoClient(new Uri(Constants.UserInfoEndpoint).ToString());
var userInfoResponse = await userInfoClient.GetAsync(n.ProtocolMessage.AccessToken);

var identity = new ClaimsIdentity(n.AuthenticationTicket.Identity.AuthenticationType);

identity.AddClaims(userInfoResponse.Claims);

n.AuthenticationTicket = new AuthenticationTicket(identity, n.AuthenticationTicket.Properties);
}
}

我在添加声明时遇到编译错误:identity.AddClaims(userInfoResponse.Claims);

错误区域实际上有两个。当指向参数时,表示:

Argument type 'System.Collections.Genereic.IEnumerable [mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]' is not assignable to parameter type ' [mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]'

另一个,当指向方法名称时说:

The type 'Claim' is defined in an assembly that is not referenced. You must add reference to an assembly 'System.Security.Claims, Version=4.0.1.0, Culture=neutral, PublicKeyToken=503f5..'

我尝试通过 nuget 添加对此程序集的引用,但随后又发生了另一个冲突。 IdentityProvider 和 mscorlib 之间对 System.Security.Claims 的引用不明确。

如何才能实现将用户声明分配给登录用户的身份的目标?

最佳答案

查看教程,这一行:

identity.AddClaims(userInfoResponse.Claims);

必须更改为:

identity.AddClaims(userInfoResponse.GetClaimsIdentity().Claims);

您的第二个编译器错误是由于使用 Claim 类型而不指定命名空间而引起的。确定您在何处显式使用 Claim 并向其添加正确的命名空间。

注意:

此:userInfoResponse.GetClaimsIdentity().Claims相当于:

userInfoResponse.Claims.Select(c => new System.Security.Claim(c.Item1, c.Item2))

关于asp.net-mvc - 无法从 Identity Server 3 获取用户信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43829003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com