这是我的 startup.cs 代码
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddAzureAdBearer(configureOptions =>
{
configureOptions.Instance = Environment.GetEnvironmentVariable("AD_Instance");
configureOptions.Domain = Environment.GetEnvironmentVariable("AD_Domain");
configureOptions.TenantId = Environment.GetEnvironmentVariable("AD_TenantId");
configureOptions.ClientId = Environment.GetEnvironmentVariable("AD_ClientId");
}
JwtBearerDefaults.AuthenticationScheme 是 Bearer
这些是我的选择:
public void Configure(string name, JwtBearerOptions options)
{
options.Audience = _azureOptions.ClientId;
options.Authority = $"{_azureOptions.Instance}{_azureOptions.TenantId}";
options.TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = false
};
options.SaveToken = true;
}
现在,根据这里的许多博客和问答,我使用这段代码来检索令牌:(顺便说一句,应用程序已经运行了 6 个多月,不要考虑一些设置问题)
var token = _httpContextAccessor.HttpContext.GetTokenAsync("access_token");
这就是它返回的内容:
我需要的是access_token。前任。承载 eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1...
更新: 看到评论/答案后,我添加了等待,但结果为 null。