当我们在Azure Active Directory中注册应用程序以使用图形API时,我看到有两种类型的应用程序Web应用程序和本机应用程序。
创建Web应用程序时,请求了两个值1.登录URL和2. App ID url。这些价值观有什么用?我们是否需要真实世界网址或仅https://localhost:randomePort?
另一方面,在创建Native应用程序时,我只能看到一个必需值'Redirect URL'。
我可以使用REST调用获取Web应用程序的访问令牌
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应用程序,我可以看到应用程序权限以及委派权限选项。
还有一件事,上面的REST调用示例验证了应用程序,如何使用REST调用来验证用户的凭据?
答案 0 :(得分:41)
本机应用程序是OAuth2用语中的公共客户端。这些应用程序旨在在设备上运行,并且不会信任保密 - 因此,它们在目录中的条目没有相应的属性。没有秘密,就没有办法断言应用程序的身份 - 因此这样的应用程序无法获得应用程序级权限,门户网站用户体验就反映了这一点。 相反,网络应用程序再次以OAuth2的说法,是机密客户端。他们可以为他们的用户获得委托令牌,但他们也可以使用客户端凭据来获取令牌。 原生应用可以通过OAuth2授权授权为用户获取令牌。您可以在https://azure.microsoft.com/en-us/documentation/articles/active-directory-authentication-scenarios/找到所有支持的拓扑的完整概述。每个场景描述都指向更多面向实现的指导。