我正在使用Azure AD v1端点来授权我的webapp。
在初始身份验证时,我没有将access_token作为有效的jwt令牌。但是我得id_token是有效的jwt,而access_token是refresh_token的值,看起来很奇怪。
我可以使用id_token作为承载令牌来调用我的Web API。一切都好。
现在当id_token过期时,我正在使用我的refresh_token发送以下刷新令牌请求。我将无符号id_token作为响应。由于新的id_token是无符号的,使用此id_token我无法访问Web API。 我错过了什么吗?
POST /token HTTP/1.1
Host: {authority}
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&
client_id=mvc&
client_secret=secret&
refresh_token=AQABAAAAAADX8GCi6J
&scope=openid%20profile%20offline_access
我正在使用以下启动配置来设置身份验证
services.AddAuthentication(options =>
{
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
})
.AddCookie(options =>
{
options.ExpireTimeSpan = TimeSpan.FromSeconds(1000);
options.Cookie.Name = "mvcapplication";
})
.AddOpenIdConnect(option=>{
options.Authority = "{aad v1 endpoint}";
options.ClientId = "mvc";
options.ClientSecret = "secret";
options.ResponseType = "code id_token";
options.ResponseMode = "form_post";
options.SignInScheme = "Cookies";
options.CallbackPath = "/Home/Index/";
options.RequireHttpsMetadata = false;
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
//Default Scopes
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("offline_access");
});
答案 0 :(得分:1)
总结评论中的讨论:
resource
GetClaimsFromUserInfoEndpoint
提供了有效的访问令牌您可以在此处查看有关在ASP.NET Core MVC(2.0)应用中设置Azure AD身份验证的详细信息:https://joonasw.net/view/aspnet-core-2-azure-ad-authentication。
您还可以在此处找到示例应用:https://github.com/juunas11/aspnetcore2aadauth