首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带AuthenticationBuilder的IConfigureOptions<T>

带AuthenticationBuilder的IConfigureOptions<T>
EN

Stack Overflow用户
提问于 2019-03-13 23:51:18
回答 1查看 654关注 0票数 0

我过去使用过IConfigureOptions,现在有一个使用OAuth自省的新项目。

我尝试使用一个类来设置选项模式:

代码语言:javascript
复制
    public class
        ConfigureOAuth2IntrospectionOptions : IConfigureOptions<
            OAuth2IntrospectionOptions>
    {
        private readonly Settings settings;

        public ConfigureOAuth2IntrospectionOptions(IOptions<Settings> options)
        {
            settings = options.Value;
        }

        public void Configure(OAuth2IntrospectionOptions options)
        {
            options.IntrospectionEndpoint =
                $"{settings.IdentityServer.Authority}/connect/introspect";
            options.ClientId = ScopeNameConstants.MyClientId;
            options.ClientSecret = settings.IdentityServer.ClientSecret;
        }
    }

在我的startup.cs中有这样的代码:

代码语言:javascript
复制
            services.AddAuthentication(
                    options =>
                    {
                        options.DefaultAuthenticateScheme =
                            OAuth2IntrospectionDefaults.AuthenticationScheme;
                        options.DefaultChallengeScheme =
                            OAuth2IntrospectionDefaults.AuthenticationScheme;
                    })
                .AddOAuth2Introspection();

我添加到DI绑定中:

代码语言:javascript
复制
services.AddSingleton<IConfigureOptions<OAuth2IntrospectionOptions>, ConfigureOAuth2IntrospectionOptions>();

但是,configuration方法从未在我的configuration类中调用。

AddOauth2Introspection方法有一个带有类似这样的操作参数的方法,我认为它会被自动使用:

代码语言:javascript
复制
public static AuthenticationBuilder AddOAuth2Introspection(this AuthenticationBuilder builder, string authenticationScheme, Action<OAuth2IntrospectionOptions> configureOptions)

这是否可以在默认情况下使用?我想使用这个模式,这样我就可以对我的configuration对象使用构造函数注入,而不是直接在Startup.cs中引用配置。

我可能还必须进行加密/解密,这将需要一个注入类,而我不想让它在ConfigureServices方法中可用。

编辑: Microsoft Docs中的示例Swashbuckle实现:

初始入场券:https://github.com/Microsoft/aspnet-api-versioning/issues/422

新示例:https://github.com/Microsoft/aspnet-api-versioning/blob/master/samples/aspnetcore/SwaggerSample/ConfigureSwaggerOptions.cs

EN

回答 1

Stack Overflow用户

发布于 2019-07-21 02:28:46

尝试使用IConfigureNamedOptions,因为身份验证方案是命名的。您必须实现一个接受名称的额外的Configure方法。您仍然可以将您的类DI绑定为IConfigureOptions

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55146061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档