微软图形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/

+0

谢谢你,那是我的问题。我在门户中创建了两个应用程序,一个在app.dev中创建。我混淆了v1和v2的端点。 将资源添加到我的v1端点,并且一旦我运行v2的管理员同意网址,一切正常。 谢谢 –