微软图形OAuth问题
问题描述:
我有一个背景JS应用程序不会有任何用户输入,所以我正在寻找使用应用程序验证,而无需用户输入。我已经在Azure AD门户和apps.dev.microsoft.com中设置了一个应用程序。微软图形OAuth问题
我使用以下端点:
login.microsoftonline.com/{Tenant}/oauth2/token
用下面的身体:
client_id: application_id
client_secret: generated key
grant_type: client_credentials
scope: "https://graph.microsoft.com/.default"
然而,这产生的access_token当我尝试和使用图形API使用它,我得到以下错误
访问令牌验证失败
当调查令牌与具有用户输入的普通OAuth令牌相比时,我注意到它传入角色而不是scp,观众是我的应用程序,而不是graph.microsoft.com。
我在做什么错了?
答
在Azure AD门户中注册的应用程序与Azure AD V1.0端点一起使用,在apps.dev.microsoft.com
中注册的应用程序可与v2.0端点一起使用。请首先参考this document了解v2.0端点的不同之处。
要使用Azure的AD v2.0的访问安全资源,而无需用户交互(客户端凭证流),你应该发送POST请求到/令牌V2.0端点:
POST /common/oauth2/v2.0/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
client_id=535fb089-9ff3-47b6-9bfb-4f1264799865&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default&client_secret=qWgdYAmab0YSkuL1qKv5bPX&grant_type=client_credentials
你可以请参阅this document以了解如何在Azure AD V2.0端点中使用OAuth 2.0客户端凭据授权。
如果您想要使用客户端凭证流的azure ad v1.0(在azure门户中注册的应用程序),请参阅this document。在azure ad v1.0中,您应该指明客户端应用程序请求授权的参数resource
,在您的方案中,如果要获取令牌以调用Microsoft图表API,资源应为https://graph.microsoft.com/
。
谢谢你,那是我的问题。我在门户中创建了两个应用程序,一个在app.dev中创建。我混淆了v1和v2的端点。 将资源添加到我的v1端点,并且一旦我运行v2的管理员同意网址,一切正常。 谢谢 –