【发布时间】:2019-09-30 18:35:18
【问题描述】:
我有一个应用程序具有 OAuth 的现有实现(有点)。我们正在迁移到使用 Identity Server 进行 OAuth,我现在需要在某些控制器/操作上同时支持这两种身份验证方案。
每种身份验证方法的不记名令牌明显不同。一个是 guid,另一个是 Identity Server 生成的正确令牌。
我只需要某种方式来查看令牌并说出字符串长度
根控制器有一个基本的 [Authorize] 属性。此外,如果我切换方案的顺序,则列出的第一个作品。
这是我的 Startup.cs 代码
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = Constants.CompanyBearerScheme;
options.DefaultChallengeScheme = Constants.CompanyBearerScheme;
}).AddJwtBearer(options =>
{
options.Authority = "https://identityserverurl";
options.Audience = "APISCOPE";
options.RequireHttpsMetadata = true;
}).AddBearerToken(Constants.CompanyBearerScheme, o =>
{
o.ConnectionString = bearerTokenHandlerOptions.ConnectionString;
o.DefaultScopes = bearerTokenHandlerOptions.DefaultScopes;
})
示例操作
[Authorize(AuthenticationSchemes = "CompanyBearer,Bearer")]
[HttpGet("TEST")]
public async Task<IActionResult> TestAuthentication()
{
return Ok();
}
样品申请
GET {{Url}}/Api/TEST
Authorization: Bearer SOMETOKEN
【问题讨论】:
-
嗨,如果你弄明白了,你可以把它作为答案发布,因为它让将来有类似问题的人知道已经有一个答案:)。见stackoverflow.com/help/self-answer
标签: asp.net-core-2.0 asp.net-authorization