【发布时间】:2021-11-15 11:25:01
【问题描述】:
我正在使用带有 Openid 的流程,在该流程中我将用户重定向到另一个提供商,以处理登录问题,并且在此登录后,我在 /login/callback?code=xxxx URL 中收到 code。
所以,JWT 是使用 code 生成的,但我无法验证它。我的 STS 中没有well-known 端点,我需要这样手动配置:
services.AddAuthorization(cfg =>
{
cfg.AddPolicy("MyPolicy", cfgPolicy =>
{
cfgPolicy.AddRequirements().RequireAuthenticatedUser();
cfgPolicy.AddAuthenticationSchemes(OpenIdConnectDefaults.AuthenticationScheme);
});
}).AddAuthentication(cfg =>
{
cfg.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
cfg.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(cfg =>
{
cfg.ClientId = authenticationConfig.ClientId;
cfg.ClientSecret = authenticationConfig.ClientSecret;
cfg.ResponseType = "code";
cfg.CallbackPath = "/login/callback";
cfg.Scope.Clear();
cfg.Scope.Add("openid");
cfg.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = "https://myissuer"
};
cfg.Configuration = new OpenIdConnectConfiguration
{
AuthorizationEndpoint = "https://mysts/api/oauth/authorize",
TokenEndpoint = "https://mysts/api/oauth/token",
UserInfoEndpoint = "https://mysts/api/oauth/token_info"
};
});
一些要点:
- 我有一个令牌自检端点,用于验证我的令牌(token_info 端点)。
- 我没有返回公钥 (jwks) 的默认端点。我的端点始终是某些值的连接,例如 --> https://mysts/offline/jwks/{kid}/{clientid},所以这是动态的并且取决于令牌。
- 我没有众所周知的端点。
【问题讨论】:
-
您能告诉我您的问题吗?你想让我们帮你什么?
-
“我有一个令牌自省端点”,您还可以将每个令牌提交到自省端点进行验证,这可能更容易实现,但最终速度较慢执行条款(考虑到它是异步同步和所有这些)。
标签: asp.net-core oauth-2.0 openid-connect openid