带有 Microsoft Graph 资源的本机应用程序 ADAL 3 不断获得相同的范围
Native App ADAL 3 w/ Microsoft Graph resource keep getting same scopes
我已经使用 AAD 注册了一个本机应用程序 (WPF),并将其设置为具有 Microsoft Graph 的权限。我有一小部分委托权限来启动。一切都很好 - 即读取用户的日历。
我添加了一些额外的权限(特别是 SendMail)。当我想使用Graph SDK发送邮件时,出现访问错误。当我检查 ADAL 返回的访问令牌时,它只包含范围 "scp": "Calendars.Read offline_access Tasks.Read User.Read".
非常简单的 ADAL 调用...
_authClient = HermesAuthenticationClient.CreateAuthenticationClient(clientId, _redirectUri, authority);
var result = await _authClient.AcquireTokensAsync(resource, new PlatformParameters(PromptBehavior.Always));
任何指点将不胜感激。
存在一个涉及更改现有应用程序范围的已知问题。因为您已经使用先前的范围授权该应用程序,所以它不知道已请求的其他范围。换句话说,您授权的旧范围会被缓存,而新范围不会被识别。
您需要手动撤消 "My Apps" 下的应用程序的权限。
或者,您可以为应用程序生成新的 ID,这也会触发 "request permission" 工作流程。
我已经使用 AAD 注册了一个本机应用程序 (WPF),并将其设置为具有 Microsoft Graph 的权限。我有一小部分委托权限来启动。一切都很好 - 即读取用户的日历。
我添加了一些额外的权限(特别是 SendMail)。当我想使用Graph SDK发送邮件时,出现访问错误。当我检查 ADAL 返回的访问令牌时,它只包含范围 "scp": "Calendars.Read offline_access Tasks.Read User.Read".
非常简单的 ADAL 调用...
_authClient = HermesAuthenticationClient.CreateAuthenticationClient(clientId, _redirectUri, authority);
var result = await _authClient.AcquireTokensAsync(resource, new PlatformParameters(PromptBehavior.Always));
任何指点将不胜感激。
存在一个涉及更改现有应用程序范围的已知问题。因为您已经使用先前的范围授权该应用程序,所以它不知道已请求的其他范围。换句话说,您授权的旧范围会被缓存,而新范围不会被识别。
您需要手动撤消 "My Apps" 下的应用程序的权限。
或者,您可以为应用程序生成新的 ID,这也会触发 "request permission" 工作流程。