相关疑难解决方法(0)

.Net Core 2 OpenID Connect身份验证和多个身份

我仍在学习Identity Framework,并且在尝试在.Net Core 2 MVC应用程序中设置身份验证时非常迷失。感谢我提供任何建议,因为我什至不确定自己在做什么。


我需要集成OpenID Connect身份提供程序进行身份验证,并使用辅助数据源进行授权。除名称声明外,我不方便使用OIDC IdP的任何声明。其余的用户声明必须来自辅助数据源(该辅助数据源通过定制UserStoreUser实体连接到Identity Framework )。

我正在使用OpenId Connect提供程序来处理身份验证。这工作正常,并为我提供了第一个身份(我只能使用一个索赔)。当我需要获取用户的第二个Identity并将其添加到主体,并将其设置为default时,我的困惑就开始了Identity。该秒Identity提供了所有用户声明,包括角色。

我对身份框架的理解是,我应该拥有一个ClaimsPrincipal带有两个身份的单一身份,以便可以插入身份框架的其余部分。但是,对于两个身份,默认值ClaimsPrincipal将自动选择第一个身份(这是我不能使用的身份),因此,似乎我应该创建一个自定义ClaimsPrincipal并将其设置为PrimaryIdentitySelector第二个身份为主要身份。

public class MyClaimsPrincipal : ClaimsPrincipal
{
    private static readonly Func<IEnumerable<ClaimsIdentity>, ClaimsIdentity> IdentitySelector = SelectPrimaryIdentity;

    /// <summary>
    /// This method iterates through the collection of ClaimsIdentities and chooses an identity as the primary.
    /// </summary>
    private static ClaimsIdentity SelectPrimaryIdentity(IEnumerable<ClaimsIdentity> identities)
    {
        // Find and return the …
Run Code Online (Sandbox Code Playgroud)

c# openid-connect asp.net-core asp.net-core-2.0

1
推荐指数
1
解决办法
468
查看次数