首页 > 解决方案 > 从 OAuthMiddleware .NET Core 访问 OAuthOptions

问题描述

我正在尝试访问在 ConfigureServices 期间提供给AuthenticationBuilder的OAuthOptions。我特别希望能够访问 UserInformationEndpoint。

目标:我正在尝试为 IdentityServer4 构建自定义授权,并且我不想为外部提供者硬编码 UserInformationEndpoint。

身份验证设置示例

services.AddAuthentication ()
        .AddGoogle (options => {
           options.ClientId = "";
           options.ClientSecret = "";
        });

稍后在我的代码中

public class ExternalGrantValidator: IExtensionGrantValidator {
        private readonly IAuthenticationSchemeProvider _schemeProvider;

        public ExternalGrantValidator (IAuthenticationSchemeProvider schemeProvider) {
            _schemeProvider = schemeProvider;
        }

        public async Task ValidateAsync (ExtensionGrantValidationContext context) {
            var provider = context.Request.Raw.Get ("provider");
            if (string.IsNullOrWhiteSpace (provider)) {
                context.Result = new GrantValidationResult (TokenRequestErrors.InvalidRequest, "provider is required");
                return;
            }
            var schemeProvider = await _schemeProvider.GetSchemeAsync (provider);
            // Do something to get OAuthOptions for scheme that was setup in ConfigureServices
        } 
}

标签: c#asp.net-coreasp.net-core-webapiidentityserver4

解决方案


推荐阅读