access-token - AcquireTokenSilentAsync 不起作用
问题描述
我有以下设置:
var authContext = new AuthenticationContext("https://login.microsoftonline.com/common");
string redirectUri = Url.Action("Authorize", "Planner", null, Request.Url.Scheme);
Uri authUri = authContext.GetAuthorizationRequestURL("https://graph.microsoft.com/", SettingsHelper.ClientId,
new Uri(redirectUri), UserIdentifier.AnyUser, null);
// Redirect the browser to the Azure signin page
return Redirect(authUri.ToString());
这将带您:
// Get the 'code' parameter from the Azure redirect
string authCode = Request.Params["code"];
// The same url we specified in the auth code request
string redirectUri = Url.Action("Authorize", "Planner", null, Request.Url.Scheme);
// Use client ID and secret to establish app identity
ClientCredential credential = new ClientCredential(SettingsHelper.ClientId, SettingsHelper.ClientSecret);
//FileTokenCache at specific location
TokenCache fileTokenCache = new FilesBasedAdalV3TokenCache("C:\\temp\\justin.bin");
AuthenticationContext authContext = new AuthenticationContext(SettingsHelper.AzureADAuthorityTenantID, fileTokenCache);
AuthenticationResult authResult = null;
try
{
// Get the token silently first
authResult = await authContext.AcquireTokenSilentAsync(SettingsHelper.O365UnifiedResource, credential, UserIdentifier.AnyUser);
}
catch (AdalException ex)
{
authContext = new AuthenticationContext(SettingsHelper.AzureADAuthority, fileTokenCache);
authResult = await authContext.AcquireTokenByAuthorizationCodeAsync(authCode, new Uri(redirectUri), credential, SettingsHelper.O365UnifiedResource);
}
令牌已成功保存在文件中,并且似乎也已成功检索。然而,静默令牌获取仍然会给出一个例外,即首先使用非静默函数获取令牌。请问我错过了什么?
请注意,O365UnifiedResource 设置为https://graph.microsoft.com/
解决方案
通过使用解决了这个问题
new UserIdentifier("<email address used to login microsoft apps>", UserIdentifierType.RequiredDisplayableId)
代替
UserIdentifier.AnyUser
并将客户端 ID 固定为应用程序注册中指定的 APP ID
推荐阅读
- java - 如何使用 Selenium WebDriver 使用 Java 确定元素的颜色?
- javascript - 获取 DataTables 中选择框的值
- java - 为什么我们在 drawVertices 的颜色数组中需要额外的元素?
- vuejs2 - 在 vuetify 中展开导航抽屉时避免按钮重叠?
- ios - 从 iOS 主屏幕启动网站时 Mailto 不起作用
- c++ - visual studio express 2017“无法创建目录。访问路径被拒绝”
- powershell - 如何从受用户名和密码保护的网站下载文件并将其保存在文件夹中?
- neo4j - Neo4j - 获取两个节点共享的节点列表作为边缘属性
- maven-3 - 用户无法使用 maven 部署到 Nexus 3,只能使用 UI
- javascript - 从 reducer 到 action creator 的访问状态