从后台作业中获取令牌()

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 流程,但这不是一个好主意,而且它会带来许多重要的限制。