没有管理员登录的客户端凭据流

时间:2016-11-22 14:14:38

标签: azure certificate office365

关于实施客户端凭据流的these指示,使用this示例repo进行测试,我使用可以读取电子邮件,日历,联系人的客户端凭据流获得了应用程序的运行版本。< / p>

但是,每次运行时,我都需要使用我的O365租户管理员登录并授予应用程序访问权限,以便阅读电子邮件,日历等。

我不需要输入任何凭据来读取数据,因此我不需要输入任何凭据来读取数据,因为我已经创建了连接我的AAD的证书。我的网络应用程序的应用程序。

我唯一能想到的是,我必须只与管理员一次登录才能正确设置它,但是每次运行应用程序时我都会被提示以管理员身份登录是没有意义的(运行在localhost)。

1 个答案:

答案 0 :(得分:0)

您必须运行一次管理员同意,然后这应该为您的应用提供所需的访问权限,只需要其客户端ID和密码。现在这只对应用程序权限很明显,如果你使用委派权限,那些总是需要登录用户。

要获得管理员同意,您需要在Azure AD中点击这样的URL:

https://login.microsoftonline.com/common/oauth2/authorize?client_id=your-client-id&redirect_uri=https%3A%2F%2Fwww.company.com%2Fazure-redirect%2F&response_type=code&prompt=admin_consent

将您的客户端ID替换为您应用的客户端ID,重定向URI以及为您的应用注册的回复网址(当然是URL编码的)。它应该提示您“您是否想要给app appName以下权限?组织中没有其他人会被问到。”您还可以将租户ID或域名替换为common。

您可以使用Azure AD Graph Explorer检查是否已成功通过同意。检查 servicePrincipals ,找到您的应用,然后检查 oauth2PermissionGrants ,找到包含服务主体ID的对象。这将告诉您已授予哪些权限以及哪些资源(图谱API等)