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

Azure 从后台作业获取令牌(),azure,oauth,azure-active-directory,azure-webjobs,adal,Azure,Oauth,Azure Active Directory,Azure Webjobs,Adal,我正在使用Azure Active Directory,并使用OAuth与Office 365的Exchange EWS进行交互 我知道您可以使用authContext.AcquireToken(),它将为您管理所有oauth。它将为您保存、使用和刷新令牌,并在需要时提示用户凭据。在我的例子中,问题是我需要在Azure后台web作业中进行交互,这样它就无法请求用户凭据 我尝试的是获取授权代码,让用户从GetAuthorizationRequestURL()访问url。然后使用AcquireTok

我正在使用Azure Active Directory,并使用OAuth与Office 365的Exchange EWS进行交互

我知道您可以使用authContext.AcquireToken(),它将为您管理所有oauth。它将为您保存、使用和刷新令牌,并在需要时提示用户凭据。在我的例子中,问题是我需要在Azure后台web作业中进行交互,这样它就无法请求用户凭据

我尝试的是获取授权代码,让用户从
GetAuthorizationRequestURL()
访问url。然后使用
AcquireTokenByAuthorizationCode()
获取令牌,并将刷新令牌保存在数据库中。因此,当后台作业需要连接到EWS时,它可以使用
AcquireTokenByRefreshToken()
使用刷新令牌(保存在数据库中)

这种方法是有效的,但我不知道当新的刷新令牌在14天后过期时,如何获得它

您知道如何更新刷新令牌,或者在后台作业中使用ADAL的更好方法吗


谢谢和问候

这里有个主意。创建一个简单的控制台或win form应用程序来请求您的令牌。在该应用程序中,使用自定义缓存将令牌保存在便携式存储中(如加密文件,请参阅)。运行应用程序一次以对缓存进行种子设定。然后获取该缓存并将其与web作业一起部署。现在90天左右你会没事的。
另一种选择是使用用户名/密码流,但这很少是一个好主意,而且会带来许多重要的限制。

这方面的问题是,该应用程序不仅适合我。我们想要的是用户访问网站并“授权”访问其office 365。然后一个背景工作就是每晚做点什么。。这就是为什么凭据和oauth进程应该在网站中提示,但令牌的使用在后台作业中。有什么想法吗?啊,那很容易。只需在网站和后台作业之间共享令牌缓存。Acquiretokensilent不使用和续订刷新令牌。只需在后台作业中运行控制器中运行的逻辑。重要的是,web站点和作业都使用相同的缓存实例。