从后台作业中获取令牌()
AcquireToken() from Background Job
我正在使用 Azure Active Directory 和 ADAL 通过 OAuth 与 Office 365 的 Exchange EWS 交互。
我知道您可以使用 authContext.AcquireToken()
,它会为您管理所有 oauth。它将为您保存、使用和刷新令牌,并在需要时提示用户凭据。我的问题是我需要在 Azure 后台 Web 作业中进行交互,因此它无法请求用户凭据。
我尝试的是获取授权码,让用户从 GetAuthorizationRequestURL()
访问 url。然后使用 AcquireTokenByAuthorizationCode()
获取令牌并将刷新令牌保存在数据库中。因此,当后台作业需要连接到 EWS 时,它可以使用 AcquireTokenByRefreshToken()
.
使用刷新令牌(保存在 Db 中)
这种方法有效,但我不知道如何在 14 天后过期时获得新的刷新令牌。
知道如何更新刷新令牌或在后台作业中使用 ADAL 的更好方法吗?
感谢和问候!!
这里有一个想法。创建一个简单的控制台或 win 表单应用程序来请求您的令牌。在该应用程序中,使用自定义缓存将令牌保存在便携式存储中(如加密文件,请参阅 https://github.com/AzureADSamples/NativeClient-DotNet)。 运行 应用一次为缓存播种。然后获取该缓存并将其与您的 Web 作业一起部署。现在 90 天左右你会没事的。
另一种选择是使用 username/password 流程,但这不是一个好主意,而且它会带来许多重要的限制。
我正在使用 Azure Active Directory 和 ADAL 通过 OAuth 与 Office 365 的 Exchange EWS 交互。
我知道您可以使用 authContext.AcquireToken()
,它会为您管理所有 oauth。它将为您保存、使用和刷新令牌,并在需要时提示用户凭据。我的问题是我需要在 Azure 后台 Web 作业中进行交互,因此它无法请求用户凭据。
我尝试的是获取授权码,让用户从 GetAuthorizationRequestURL()
访问 url。然后使用 AcquireTokenByAuthorizationCode()
获取令牌并将刷新令牌保存在数据库中。因此,当后台作业需要连接到 EWS 时,它可以使用 AcquireTokenByRefreshToken()
.
这种方法有效,但我不知道如何在 14 天后过期时获得新的刷新令牌。
知道如何更新刷新令牌或在后台作业中使用 ADAL 的更好方法吗?
感谢和问候!!
这里有一个想法。创建一个简单的控制台或 win 表单应用程序来请求您的令牌。在该应用程序中,使用自定义缓存将令牌保存在便携式存储中(如加密文件,请参阅 https://github.com/AzureADSamples/NativeClient-DotNet)。 运行 应用一次为缓存播种。然后获取该缓存并将其与您的 Web 作业一起部署。现在 90 天左右你会没事的。 另一种选择是使用 username/password 流程,但这不是一个好主意,而且它会带来许多重要的限制。