2016-11-22 83 views
0

关注these关于实现客户端凭证流程的指示,使用this样本库进行测试,我使用可读取电子邮件,日历和联系人的客户端凭证流获取应用程序的运行版本。没有管理员登录的客户端证书流程

不过,我需要我每次运行它时登录我O365占有者管理员,并授予该应用访问阅读电子邮件,日历等

是不是客户机凭证流的整点(应用程序 - 只有)我不需要输入任何凭据来读取数据,因为我已经创建了一个连接我的AAD-app和我的web-app的证书。

我唯一能想到的就是我只需要用管理员登录一次就可以正确设置它,但是当我每次运行应用程序时都会提示以管理员身份登录提示无效。在本地主机上运行)。

回答

0

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

为了让管理员同意后,你需要点击一个URL像这样在Azure的AD:

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(当然是URL编码)。它应该会提示你,例如“你想给应用AppName提供下列权限吗?组织中没有其他人会被问到。”您也可以用您的租户ID或域名替换常见问题。

您可以使用Azure AD Graph Explorer来检查是否成功通过了同意。检查servicePrincipals,找到您的应用程序,然后检查oauth2PermissionGrants并找到包含您的服务主体ID的对象。这将告诉你什么权限已被授予和什么资源(图形API等)

+0

我如何确保访问该应用程序的人实际上在组织中?或者我想我不知道,那是重点?只是感觉很不安全^^ –

+0

如果您的应用程序是单租户,则只有来自该Azure AD的用户才能登录。但现在,您已赋予应用程序权限,可以在没有用户身份的情况下执行操作。然后,如果您的应用程序的某些部分使用这些仅限应用程序的权限,则必须确保授权设置正确。 – juunas