我需要在单个oAuth 2.0令牌提供程序中配置客户端凭据和授权授予类型,这在Azure和.NET核心API中

qpgpyjmq  于 2023-01-20  发布在  .NET
关注(0)|答案(1)|浏览(93)

我尝试在oAuth 2.0中同时使用两种授权类型。因为我需要设置一些API方法,需要使用客户端凭据,因为这些凭据用于服务到服务连接,而对于其他一些方法,我需要设置授权授权类型,因为它用作用户到服务连接。我的oAuth令牌提供程序是Azure身份服务,API是在.NET Core中构建的

ncecgwcz

ncecgwcz1#

这可以通过创建两个不同的客户端来实现。在这两种情况下,客户端都将根据其流程管理身份验证,然后获取用于调用API的访问令牌。API所有者还应设计客户端请求的作用域。
API的第一项工作应该是在每个请求上验证JWT访问令牌。您可以使用Microsoft中间件来完成此任务:

private void ConfigureOAuth(IServiceCollection services)
{
    services
        .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.Authority = this.configuration.MetadataEndpoint;
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidIssuer = "myissuer",
                ValidAudience = "myaudience"
            };
        });
}

你的API控制器会收到一个ClaimsPrincipal,你可以使用authorization policies来实现授权,以检查你是否有正确的作用域和当前操作的声明:

[HttpGet("{id}/transactions")]
[Authorize(Policy = "mypolicy")]
public async Task<Transactions> GetTransactionsAsync(string id)
{
    // Implementation goes here
}

相关问题