c# - 从 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
}
}
解决方案
推荐阅读
- flutter - 当您在颤动中单击选项卡时,如何在屏幕底部显示文本字段
- python - 随着更多项目的添加,将对象附加到 Python 数组变得线性变慢
- docker - 流星验证部署:失败
- sentry - 在 Sentry 中,确定错误是否每天在同一时间发生的最佳方法是什么?
- database - 如何从 DynamoDB 表中删除大量项目?
- next.js - Stripe Checkout 不加载 3D Secure
- pyspark - 根据pyspark中的列表删除包含值的行?
- java - 是否可以强制转换 List 的实例
> 列出 - > 在 Java 中 O(1) 时间?
- javascript - 如何在循环调用Angular 11时获取组件的索引
- mysql - 我无法先通过 brew 登录 mysql