如何确保web api验证由客户端应用程序生成的openid令牌?



OpenId连接客户端应用start .cs文件中的配置:

services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
options.ClientId = azureAdConfig.ClientId;
options.ClientSecret = azureAdConfig.ClientSecret;
options.Authority = string.Format(com/, azureAdConfig.Tenant);
options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
options.Resource = azureAdConfig.ResourceURI_Graph;
options.Events = new AuthEvents(azureAdConfig, connectionStringsConfig);
});

我想把令牌传递给web api。

但是如何保护web api并验证api项目中的令牌?

我同意大多数文档似乎专注于web应用程序场景。假设您在那里也使用。net Core,对于api,它是使用这个包的功能的情况:

  • Microsoft.AspNetCore.Authentication.JwtBearer
services
.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
})

有关工作示例,请参阅下面的参考资料-代码可以以相同的方式编写任何授权服务器:

  • 医生

AZURE AD令牌

这些有一些特定的要求。在自定义api中要避免的是JWT头中带有nonce字段的JWT,因为这些只意味着由Microsoft自己的api

使用。我的博客中有一些关于如何绕过这个问题的细节,通过注册一个逻辑API服务来表示一个或多个API,然后暴露你自己的API范围。

相关内容

最新更新