我正在开发ASP.NET Core 2.0 API。目前,此API支持服务到服务工作流,其中客户端控制台应用程序使用其控制台应用程序的Azure AD应用程序注册AppId / AppKey值从Azure AD获取访问令牌。
为了支持这一点,我的API使用了......
// Add Azure AD OAUTH2.0 Authentication Services
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddAzureAdBearer(options => Configuration.Bind("AzureAd", options));
在Startup.cs的ConfigureServices方法和...
中 app.UseAuthentication();
在Startup.cs Configure方法中。最后......
[Authorize]
属性以及......
using Microsoft.AspNetCore.Authorization;
在我的控制器中使用语句。
现在一切正常。
但是,我现在需要允许管理员网络应用访问我的API。此管理员Web应用程序将使用Azure AD来验证用户登录并获取身份令牌。我希望我的API也能够接受此标识令牌;
ASP.NET Core 2.0是否支持访问令牌和身份令牌,而不会破坏我目前使用服务工作流的服务?
答案 0 :(得分:1)
这应该可以正常工作 - 您的上述细分需要一些小的调整:
THE CONSOLE APP 获取基于API密钥的简单访问令牌 - 访问令牌不是特定于用户的,代表应用程序标识。
ADMIN WEB APP 用户登录并获取id_token 和access_token 。 id_token仅被Web应用程序用作身份验证的证据,从不发送到任何地方。 access_token是特定于用户的,可用于调用API并获取个性化数据。
API API的工作是接收访问令牌并根据令牌的声明进行授权。对于控制台应用程序,声明只会通过“客户端ID”包含应用程序标识。要求。对于网络应用程序,您还可以识别用户 - 最常见的是通过' sub'声明(可能还有其他用户声明,如电子邮件)。