首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ADAL v3 -如何正确地摆脱刷新令牌代码?

ADAL v3 -如何正确地摆脱刷新令牌代码?
EN

Stack Overflow用户
提问于 2018-09-26 04:19:22
回答 2查看 577关注 0票数 0

在ADAL v2中,我们这样做:

代码语言:javascript
复制
// Common parameter:
_clientCredential = new ClientAssertionCertificate(clientId, certificate);

// Get the token for the first time:
var userAssertion = new UserAssertion(accessToken, "urn:ietf:params:oauth:grant-type:jwt-bearer", userName);
_authResult = await authContext.AcquireTokenAsync(resource, _clientCredential, userAssertion);

// Refresh the token (when needed):
_authResult = await authContext.AcquireTokenByRefreshTokenAsync(authResult.RefreshToken, _clientCredential);

注意,为了刷新令牌,我们只需要前面的身份验证结果和公共客户端凭据(_authResult_clientCredential)。这很方便.

ADAL v3缺乏AcquireTokenByRefreshTokenAsync和这是解释。但这并没有具体地说,需要什么样的变革。

我们是否必须重播第一个AcquireTokenAsync (因此必须将resourceaccessTokenuserName存储在程序状态的某个位置)?

或者只有公共元素(_authResult_clientCredential)才能获得最新的令牌?

EN

回答 2

Stack Overflow用户

发布于 2018-09-26 12:44:05

AcquireTokenSilentAsync现在提供了使用刷新令牌的机制。请参阅使用缓存令牌使用缓存令牌的AcquireTokenSilentAsync以获得使用此方法的模式。

你在利用ADAL令牌缓存吗?它可以帮助您避免管理代码中使用刷新令牌的底层实现细节以及您面临的问题。

票数 0
EN

Stack Overflow用户

发布于 2018-11-06 09:02:35

ADAL 3.x中推荐的代表流的方法是使用:

代码语言:javascript
复制
try
{
 result = await ac.AcquireTokenSilentAsync(resource, clientId);
}
catch (AdalException adalException)
{
 if (adalException.ErrorCode == AdalError.FailedToAcquireTokenSilently ||
     adalException.ErrorCode == AdalError.InteractionRequired)
 {
  result = await ac. AcquireTokenAsync (resource, clientCredentials, userAssertion);
 }
}

有关详细信息,请参阅https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/wiki/Service-to-service-calls-on-behalf-of-the-user

请注意,在有些情况下,您可以缓存使用ADAL.NET v2.x获得的刷新令牌,并且为了帮助从adal2.x迁移到MSAL.NET,我们计划在MSAL.NET中重新引入AcquireTokenByRefreshToken (但不是在adal4.x中)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52509883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档