我怎样才能获得刷新令牌
how can I get refresh token
我学习了这段代码示例:https://github.com/Azure-Samples/active-directory-dotnet-graphapi-web,是的,我可以在 AuthorizationCodeReceived 中获取访问令牌:
AuthenticationHelper.token = result.AccessToken;
但是我如何获得刷新令牌?result.RefreshToken 不可用,那么我如何使用 acquiretokenbyrefreshtoken 函数?
ADAL 2.X 中提供了 acquiretokenbyrefreshtoken 函数,该代码示例使用的是 ADAL 3.13.8,并且从 ADAL3.X 开始,库将不会公开刷新令牌和 AuthenticationContext.AcquireTokenByRefreshToken 函数.
ADAL 缓存刷新令牌,并会在您调用 AcquireToken 并且请求的令牌需要更新时自动使用它(即使您想为不同的资源获取新的访问令牌)。
有关 ADAL 刷新令牌的更多详细信息,请参阅 here . Also click here and here 的说明。
如果您正在寻找持久机制,您可以简单地使用 TokenCache.Serialize()
这是我的做法:
首先,获取令牌并序列化缓存令牌
AuthenticationContext authContext = new AuthenticationContext($"https://login.microsoftonline.com/{Tenant}");
var authResult = authContext.AcquireTokenAsync(resource, ClientId, new Uri("https://login.microsoftonline.com/common/oauth2/nativeclient"), new PlatformParameters(PromptBehavior.SelectAccount)).Result;
byte[] blobAuth = authContext.TokenCache.Serialize();
然后,加载缓存的字节
AuthenticationContext authContext = new AuthenticationContext($"https://login.microsoftonline.com/{tenant}/");
authContext.TokenCache.Deserialize(blobAuth);
var res = authContext.AcquireTokenSilentAsync(resource, clientId).Result;
我学习了这段代码示例:https://github.com/Azure-Samples/active-directory-dotnet-graphapi-web,是的,我可以在 AuthorizationCodeReceived 中获取访问令牌: AuthenticationHelper.token = result.AccessToken;
但是我如何获得刷新令牌?result.RefreshToken 不可用,那么我如何使用 acquiretokenbyrefreshtoken 函数?
ADAL 2.X 中提供了 acquiretokenbyrefreshtoken 函数,该代码示例使用的是 ADAL 3.13.8,并且从 ADAL3.X 开始,库将不会公开刷新令牌和 AuthenticationContext.AcquireTokenByRefreshToken 函数.
ADAL 缓存刷新令牌,并会在您调用 AcquireToken 并且请求的令牌需要更新时自动使用它(即使您想为不同的资源获取新的访问令牌)。
有关 ADAL 刷新令牌的更多详细信息,请参阅 here . Also click here and here 的说明。
如果您正在寻找持久机制,您可以简单地使用 TokenCache.Serialize()
这是我的做法:
首先,获取令牌并序列化缓存令牌
AuthenticationContext authContext = new AuthenticationContext($"https://login.microsoftonline.com/{Tenant}");
var authResult = authContext.AcquireTokenAsync(resource, ClientId, new Uri("https://login.microsoftonline.com/common/oauth2/nativeclient"), new PlatformParameters(PromptBehavior.SelectAccount)).Result;
byte[] blobAuth = authContext.TokenCache.Serialize();
然后,加载缓存的字节
AuthenticationContext authContext = new AuthenticationContext($"https://login.microsoftonline.com/{tenant}/");
authContext.TokenCache.Deserialize(blobAuth);
var res = authContext.AcquireTokenSilentAsync(resource, clientId).Result;