当我们在Azure Active Directory中注册一个使用图形API的应用程序时,我看到有两种类型的应用程序Web应用程序和Native应用程序.
在创建Web应用程序时,需要两个值1.登录URL和2.应用程序ID URL.这些价值观的使用是什么?我们需要真实的网址还是只需要https://localhost:randomePort?
另一方面,在创建本机应用程序时,我只能看到一个必需的值“重定向URL”.
POST https://login.microsoftonline.com/<tenant-id>/oauth2/token grant_type client_credentials client_id (the client ID of the calling service application in the AD) client secret (the key configured in the calling service application in the AD) resource https://graph.windows.net
但是如何使用这样的REST调用获取本机应用程序的访问令牌?因为本机应用程序没有客户端的秘密
访问权限,对于本机应用程序,我可以看到只有委派的权限选项可用,而对于Web应用程序,我可以看到应用程序权限以及委派的权限选项.
解决方法
本机应用程序是OAuth2的公共客户端.这些应用程序旨在在设备上运行,并且不信任维护一个秘密 – 因此,它们在目录中的条目没有相应的属性.没有秘密,没有办法断言应用程序的身份 – 因此这样的应用程序无法获得应用程序级权限,而门户网站UX反映了这一点.
相反,网络应用程序再次以OAuth2的说法为保密客户端.他们可以为他们的用户获得委托令牌,但是他们也可以使用客户端凭据来获取令牌.
本机应用程序可以通过OAuth2授权授权为用户获取令牌.您可以在 https://azure.microsoft.com/en-us/documentation/articles/active-directory-authentication-scenarios/上找到所有支持的拓扑的完整概述.每个场景描述都指向更多的实现导向指导.
相反,网络应用程序再次以OAuth2的说法为保密客户端.他们可以为他们的用户获得委托令牌,但是他们也可以使用客户端凭据来获取令牌.
本机应用程序可以通过OAuth2授权授权为用户获取令牌.您可以在 https://azure.microsoft.com/en-us/documentation/articles/active-directory-authentication-scenarios/上找到所有支持的拓扑的完整概述.每个场景描述都指向更多的实现导向指导.