azure 首次登录outlook外接程序时,用户同意提示未显示所有清单范围权限

cwtwac6a  于 2023-06-24  发布在  其他
关注(0)|答案(2)|浏览(104)

我正在开发需要Mail.ReadWrite权限的Outlook加载项。
我已在我的租户**(租户A)**的Azure注册应用中添加了此权限。

我还将它们添加到manifest.xml文件中

<Scopes>
  <Scope>Mail.ReadWrite</Scope>
  <Scope>offline_access</Scope>
  <Scope>User.Read</Scope>
  <Scope>profile</Scope>
  <Scope>openid</Scope>
</Scopes>

下面是我如何调用登录提示符(使用Office.js库)

const token = await OfficeRuntime.auth.getAccessToken({
  allowConsentPrompt: true,
  allowSignInPrompt: true,
  forMSGraphAccess: true,
});

那我就找第二个租客试试
tanant B中的用户首次安装加载项并运行应用时。将出现一个弹出的同意

在这里,我没有看到应用程序请求的所有权限。
当我尝试获取图形API数据时,这会导致问题。我得到这个错误:
'AADSTS65001:用户或管理员未同意使用ID为“1bc 20309-c580- 40 ad-8133-c 0 c2bd 127807”、名为“summarizrApp”的应用程序。发送此用户和资源的交互式授权请求。\r\n跟踪ID:bb 0919 d 6 -3fbe-4a 62-b5 a3 - 7389b3da4100\r\n相关ID:76194227- 9 c13 -4292-9088-aac8a7d037f1\r\n时间戳:2023-06-09 16:34:38Z'
当我在测试租户BAzure门户上登录Entreprise applications时,我看到应用程序已添加。
但我注意到,并不是所有权限都存在,只有profileopenidoffline_access,而没有Mail.ReadWriteUser.Read

然而这些权限不需要管理员授予。
只有当我点击授予管理员同意(在租户BAzure门户的企业应用程序中),然后添加缺少的权限,图形调用工作正常。

然后,

知情同意后:

缺少的权限在这里!
我所期望的行为是,在同意用户窗口中,用户获得所有权限。一旦他赠款它们,Outlook附加组件应该能够代表用户调用图形。
Authenticate a user with a single-sign-on token in an Outlook add-in

fgw7neuy

fgw7neuy1#

租户的管理员需要提供一次同意,您可以在安装应用程序时这样做。否则,用户将被要求在第一次登录时使用.

nx7onnlm

nx7onnlm2#

我创建了一个Azure AD多租户应用程序,并添加了API权限,如下所示:

现在,我尝试使用以下端点授权用户

https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?
&client_id=ClientID
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=https://graph.microsoft.com/.default
&state=12345
  • TenantB用户获得了同意界面*,包括如下所有权限:

代码已生成:

在**TenantB****企业应用**中,所有权限都添加到用户同意书中,如下所示:

现在,我使用以下参数生成了访问令牌

https://login.microsoftonline.com/organizations/oauth2/v2.0/token

client_id:ClientID
grant_type:authorization_code
code:code
redirect_uri:https://jwt.ms
client_secret:ClientSecret
scope:https://graph.microsoft.com/.default offline_access openid

当我解码令牌时,所有的范围都存在:

我可以通过上面生成的访问令牌成功调用Graph API,如下所示:

GET https://graph.microsoft.com/v1.0/me/messages

要解决错误,请尝试以下操作:

  • 请务必将scope传递为**https://graph.microsoft.com/.default**,以获得所有权限的同意。
  • 如果问题仍然存在,请授予管理员同意并通过上述范围。
  • 进行上述更改后,将出现用户同意屏幕。

相关问题