web-dev-qa-db-ja.com

MS Graph API:無効な認証トークン

Microsoft Graph APIを使用して、Outlook/O365メールボックスにメッセージを照会しようとしています。 I アプリを登録 Azureポータルで、APIをクエリするために必要な情報を受け取りました。アプリにはMail.Read許可。 (Azureポータルにアクセスできないため、このように設定されていると言われました。)OAuthエンドポイントからトークンを取得するとき、それは動作しません後続の呼び出し。現在、テストにPythonのリクエストモジュールを使用しています。

この呼び出しが失敗するのはなぜですか?正しい情報はすべて渡したようですが、明らかに何か不足しています。

POSTを実行してトークンを取得しています:

https://login.microsoftonline.com/my.domain/oauth2/token

必要なパラメーターを渡します。

data = {'grant_type': 'client_credentials', 'client_id': CLIENTID, 'client_secret': SECRET, 'resource': APPURI}

そして私はこのような応答を受け取ります:

{
    'resource': 'APPURI',
    'expires_in': '3599',
    'ext_expires_in': '3600',
    'access_token': 'TOKENHERE',
    'expires_on': '1466179206',
    'not_before': '1466175306',
    'token_type': 'Bearer'
}

しかし、私はそのトークンを使用しようとしますが、私が呼び出すものでは機能しません。私はそれをヘッダーとして渡します:

h = {'Authorization': 'Bearer ' + TOKEN}

私はこのURLを呼んでいます:

url = 'https://graph.Microsoft.com/v1.0/users/[email protected]/messages'

具体的には、これを使用します。

r = requests.get(url, headers=h)

応答は401です。

{
    'error': {
        'innerError': {
            'date': '2016-06-17T15:06:30',
            'request-id': '[I assume this should be removed for privacy]'
         },
         'code': 'InvalidAuthenticationToken',
         'message': 'Access token validation failure.'
     }
}
8
vaindil

ログインリクエストでは、リソースパラメータは https://graph.Microsoft.com である必要があります

15
user2641043

V1エンドポイントから発行されたトークンは、MS GraphAPIを使用した少なくとも一部のリクエストには無効であるようです。

代わりに、https://login.microsoftonline.com/{tenant}/oauth2/v2.0/tokenを呼び出して、v2エンドポイントからトークンを取得してみてください。

Oidc検出ドキュメントを使用している場合は、v2用のドキュメントがhttps://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configurationにあります。

1
Raphael Z

Client Credentials を使用していない限り、別のアカウントのメールボックスのメッセージにアクセスすることはできません。 [email protected]が認証に使用したアカウントと同じであり、このアドレスがアカウントのuserPrincipalNameでもあることを確認してください。

/meを使用して、メッセージを要求し、アカウントのuserPrincipalNameの決定をバイパスするために、簡略化されたURIを使用することもできます。この場合、GETリクエストはhttps://graph.Microsoft.com/v1.0/me/messagesになります

1
Marc LaFleur

Azure Portalからではなく、ここからアプリを登録する必要があると思います " https://apps.dev.Microsoft.com "。

1
Xiaomin Wu

MSのAzureドキュメントでリソースを一覧表示する必要性が指定されていない場合でも、リソースを一覧表示しないと作業を行えないことに注意してください。

https://docs.Microsoft.com/en-us/Azure/active-directory/develop/active-directory-v2-protocols-oauth-client-creds

例の「リソース」を実際に使用する、MSGraphの2本足の認証に固有の補足ドキュメントがあります。

https://developer.Microsoft.com/en-us/graph/docs/authorization/app_only

ハッピーハンティング!

0
Yvan Aquino