我有一个Azure Web应用程序,我希望用户在其中登录Microsoft(Azure AD)。我需要掌握刷新令牌。我已经看过使用库在后台静默刷新令牌的示例,但是对于我的设计,我需要掌握刷新令牌本身。
是否可以通过高级身份验证库(OpenID Connect?)来实现,如果可以,怎么办?对于手动方法,在此处进行了描述:https://docs.microsoft.com/en-us/graph/auth-v2-user在ASP.NET或.NET Core中是否有任何示例代码或教程?
首先,我建议使用MSAL来维护令牌缓存,并在令牌即将到期时为您刷新令牌。您不需要自己处理令牌到期。
[如果要保留刷新令牌,可以在注册OIDC中间件时将SaveTokens
属性设置为true,以便将令牌保存到cookie中。我假设您正在使用Microsoft.AspNetCore.Authentication.AzureAD.UI
库:
services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
.AddAzureAD(options => Configuration.Bind("AzureAd", options));
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.Authority = options.Authority + "/v2.0/";
options.SaveTokens = true;
});
然后您可以像这样在控制器中访问令牌:
var refreshToken = await HttpContext.GetTokenAsync("refresh_token");
var idToken = await HttpContext.GetTokenAsync("id_token");