Blazor服务器应用程序中Azure ADB2C的refresh_token为空,而提供了我的id_token



我有一个Blazor服务器应用程序正在运行,并启用了Azure AD B2C身份验证
一切似乎都很好,我可以访问用户的JWT令牌,我可以将其与API请求一起传递到后端。。。

然而,1小时后,令牌将过期(我也可以检查我的逻辑,看看令牌是否已过期(。在这种情况下,我显然很想获得一个新的令牌,使用刷新令牌。。。

但这就是问题所在:HttpContext中的refresh_token令牌似乎是空的,而id_token包含实际的JWT承载令牌。

造成这种情况的原因是什么?(我两个代币都是空的,但从来没有说过只有refresh_token不是空的(。

一些可能有助于查明问题的代码片段:

启动逻辑中的身份验证配置。(使用SaveTokens(

builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(
options =>
{
builder.Configuration.Bind("AzureAdB2C", options);
options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
options.Scope.Add("https://xxx.onmicrosoft.com/api/action");
options.UseTokenLifetime = true;
options.SaveTokens = true;
options.ReturnUrlParameter = CookieAuthenticationDefaults.ReturnUrlParameter;
}
,
options =>
{
options.Cookie.SameSite = SameSiteMode.None;
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
options.Cookie.IsEssential = true;
}
);

从HttpContext访问令牌

// Following variable is empty
var rToken = await _httpContextAccessor.HttpContext.GetTokenAsync("refresh_token");
// Following variable contain jwt token
var iToken = await _httpContextAccessor.HttpContext.GetTokenAsync("id_token");

有人知道吗?

ResponseType更改为"code id_token token"
offline_access添加到您的作用域

相关内容

  • 没有找到相关文章

最新更新