我正在开发 Blazor WASM 应用程序,它正在使用 MS 的 Msal 身份验证库针对 Azure AD 进行身份验证。
我特别希望能够检索刷新令牌(在令牌响应中返回)并使用刷新令牌来检索新的访问令牌。
你知道怎么做吗?
以下是我的配置。
builder.Services.AddMsalAuthentication<RemoteAuthenticationState, CustomUserAccount>
(options =>
{
builder.Configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
options.ProviderOptions.LoginMode = "redirect";
options.UserOptions.RoleClaim = "role";
}).AddAccountClaimsPrincipalFactory<RemoteAuthenticationState, CustomUserAccount,CustomUserFactory>();
获取访问令牌很容易,我们注入 IAccessTokenProvider 并调用该方法来检索令牌结果。
IAccessTokenProvider _tokenProvider;
public AccessTokenService(IAccessTokenProvider tokenProvider)
{
_tokenProvider = tokenProvider;
var tokenResult = _tokenProvider.RequestAccessToken();
}
但是我如何请求刷新令牌呢?我可以在令牌响应中看到它,但 IAccessTokenProvider 没有公开任何检索它的方法。我还需要使用其他服务吗?
检索到它后,如何使用刷新令牌来请求新的访问令牌?
如果您有访问令牌和刷新令牌,MSAL 会将它们存储在令牌缓存中。
当您调用
AcquireTokenSilent
如果访问令牌即将过期或已过期,MSAL 将自动使用刷新令牌。
这是 MSAL 在后台为开发人员处理的进程。
参见: