如何获取用于EWS的OAuth刷新令牌



我可以在EWS管理的API中使用OAuth令牌,但一旦令牌过期,我必须获得一个新的令牌。每次代币到期时,都会提示一些客户。

我正在使用AcquireToken Silent和AcquireToken ByIntegratedWindowsAuth与AcquireToken Interactive作为一种失败。AcquireTokenByIntegratedWindowsAuth在内部测试,对大多数客户来说,它在没有提示的情况下为我提供了一个新的令牌,但有些客户仍然每次都在点击AcquireToken Interactive。如果刷新令牌不是一个选项,是否有Azure Active Directory设置阻止某些用户使用AcquireTokenByIntegratedWindowsAuth调用?

try {
var t = accounts.Any()
? System.Threading.Tasks.Task.Run(() => pca.AcquireTokenSilent(ewsScopes, accounts.First()).ExecuteAsync())
: System.Threading.Tasks.Task.Run(() => pca.AcquireTokenByIntegratedWindowsAuth(ewsScopes).ExecuteAsync());
t.Wait();
token = t.Result;
} catch (Exception ex) {
var t = System.Threading.Tasks.Task.Run(() => pca.AcquireTokenInteractive(ewsScopes).ExecuteAsync());
t.Wait();
token = t.Result;
}

请确保异常为MsalUiRequiredException类型的

每次静默令牌身份验证失败时,都会引发MsalUiRequiredException,因此您知道由于某种原因,令牌无法静默续订(例如,刷新期已过,密码已更改等(。

也许你会收到另一种例外。。。

最新更新