[英]Getting refresh token from Microsoft Identity Platform
我有一個 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");
更新:
那是因為您沒有正確獲得刷新令牌。 對於測試,您可以使用代碼流並添加 OIDC 的offline_access
范圍:
services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
{
options.Authority = options.Authority + "/v2.0/";
options.SaveTokens = true;
options.ResponseType = "code";
options.ClientSecret = "xxxxxx";
options.Scope.Add("offline_access");
options.TokenValidationParameters.ValidateIssuer = false;
});
將ClientSecret
替換為您在 Azure 門戶中配置的那個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.