【发布时间】:2020-08-23 15:55:45
【问题描述】:
我有一个 xamarin 移动应用程序,它使用 Azure 广告对其用户进行身份验证。
我想使用存储在应用程序上的令牌来访问 api 上的数据。我在一个旧的 api 上工作,但我创建了一个 asp.net 核心 api,我想使用相同的令牌,因为我慢慢地将数据访问从一个 api 迁移到另一个。
我在asp.net核心启动类中设置了访问权限,如下
services.AddAuthentication(sharedoptions =>
{
sharedoptions.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
sharedoptions.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.Authority = "https://login.microsoftonline.com/{ad name}.onmicrosoft.com";
options.Audience = "api://{app service guid}";
options.TokenValidationParameters = new `enter code here`Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidAudiences = new List<String> { "{app service guid}" },
ValidIssuers = new List<string> { "[https://login.microsoftonline.com/{Azure AD guid}/v2.0/token"}
};
});
我使用邮递员进行测试,并在 asp.net 核心 api 上获得未经授权的状态,但在旧 api 上获得 OK(授权)状态,所以我知道令牌正在工作。
我的设置是否正确或我缺少某些配置?
【问题讨论】:
-
您应该为 asp.net core api 请求一个新的令牌,而不是使用以前的令牌。您不应该验证不适合您的访问令牌。可以参考我之前的回答:stackoverflow.com/questions/63410297/…
标签: authentication azure-active-directory token asp.net-core-webapi