我正在开发一个ASP.NET Core2.0API。目前,该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配置方法中。最后..。
[Authorize]属性以及..。
using Microsoft.AspNetCore.Authorization;在我的控制器中使用语句。
现在一切都很顺利。
但是,我现在需要允许一个管理web应用程序访问我的API。这个管理web应用程序将使用Azure认证用户登录并获得身份令牌。我希望我的API也能够接受这个身份令牌;
ASP.NET Core2.0能否同时支持访问令牌和身份令牌,而不破坏我目前使用的服务工作流?
发布于 2018-02-12 15:48:03
这应该很好-您的上述故障需要一些小的调整:
--控制台应用程序--基于API键获取一个简单的访问令牌--该访问令牌不是特定于用户的,而是表示应用程序标识的。
--管理WEB应用程序--用户登录并获得id_token 和access_token。id_token只是被web应用程序用作身份验证的证明,从来没有发送到任何地方。access_token是特定于用户的,可用于调用API并获取个性化数据。
API API的工作是根据令牌的声明接收访问令牌和授权。对于控制台应用程序,声明将仅通过“客户端id”声明包含应用程序标识。对于这个web应用程序,你也可以识别用户--最常见的是通过“子”声明(可能还有其他用户声明,比如电子邮件)。
https://stackoverflow.com/questions/48749613
复制相似问题