小编r s*_*ton的帖子

ASP.NET Core 6:添加具有多个授权策略的多个身份验证方案以及依赖项注入

我需要为同事创建一个框架,允许多种身份验证方案和关联授权策略(因为我们的 IDP 有多种允许的方法),但这些方案需要依赖项注入,因为 IDP 信息是从基于云的配置源提供的。在我到目前为止所处理的情况下,身份验证是使用 JWT Bearer 令牌完成的。

我想坚持最新的做法,尽可能与时俱进。所以看来我应该在我AddAuthentication的.AddJwtBearerAddAuthorizationIServiceCollection

我期望控制器或端点可以用 来装饰,AuthorizeAttribute并且它将采用指定的默认策略,该策略将使用指定的默认 authN 方案。如果该属性被赋予构造函数参数Policy = <Some Non Default Policy>AuthenticationSchemes = <Some other scheme>,它将切换到这些参数。

首先,我确定我需要使用依赖注入,所以我使用IConfigureNamedOptions<JwtBearerOptions>.

所以我为授权代码创建了这样的选项类

public class AuthCodeJwtBearerOptions : IConfigureNamedOptions<JwtBearerOptions>
{
    private readonly IClaimsTransformation _claimsTransformation;
    private readonly ConfigurationManager<OpenIdConnectConfiguration> _configurationManager;

    public AuthCodeJwtBearerOptions(IOptions<TidV4OAuthSettings> tidV4OAuthOptions,
        IClaimsTransformation claimsTransformation)
    {
        _claimsTransformation = claimsTransformation;

        _configurationManager =
            new ConfigurationManager<OpenIdConnectConfiguration>(tidV4OAuthOptions.Value.WellknownUrl,
                new OpenIdConnectConfigurationRetriever());
    }

    public void Configure(JwtBearerOptions options) => Configure("AuthCode", options);

    public void Configure(string name, JwtBearerOptions options) …
Run Code Online (Sandbox Code Playgroud)

c# oauth-2.0 jwt asp.net-core

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

标签 统计

asp.net-core ×1

c# ×1

jwt ×1

oauth-2.0 ×1