1

Microsoft Graph APIを使用してOffice 365メールを読み込もうとしています。私はAzure AD(V2ではない)を介して認証してトークンを得ることができますが、私が得る唯一の許可はUser.Readです。私はMail.Readが欲しい。MSグラフAPIを使用したAzure ADは、自分のアプリケーションMail.Readを許可できません。

Azureポータルの私のアプリケーション登録には、Mail.Read権限、API「Microsoft Graph」、権限「Read user mail」が含まれています。 /authorizeリクエストでは、resourcescopeの両方を指定します。後者はhttps://graph.windows.net/mail.readです。しかし、JSONのトークンが戻ってくると、"scope":"User.Read"になります。 https://graph.microsoft.com/v1.0/me/messagesへの要求は、エラー403を返しますが、https://graph.microsoft.com/v1.0/me/は期待どおりに動作します。

私には何が欠けていますか?

EDIT:初期OAuthのURIは次のとおりです。

https://login.microsoftonline.com/common/oauth2/authorize?response_type=code&redirect_uri=https%3a%2f%2fredacted.com%2fgoblin%2fback.aspx&client_id=3b595e3f-aecf-4a8c-8ec3-309810d75783&response_mode=query&scope=https%3a%2f%2fgraph.windows.net%2fmail.read&resource=https%3a%2f%2fgraph.windows.net%2f

JSONは行く:

{ 
    "token_type": "Bearer", 
    "scope": "User.Read", 
    "expires_in": "3599", 
    "ext_expires_in": "0", 
    "expires_on": "1494364932", 
    "not_before": "1494361032", 
    "resource": "https://graph.microsoft.com/", 
    "access_token": "redacted", 
    "refresh_token": "redacted", 
    "id_token": "redacted" 
} 
+0

OAUTHワークフローを開始するために使用しているURIだけでなく、実際のJSON出力が返されますか? –

答えて

1

あなたは、単にもう一度同意をトリガーする必要があるように思え。

アプリケーションがあり、アプリケーションが必要とするアクセス許可を更新する場合は、必要な新しいアクセス許可に同意するようユーザーに要求する必要があります。

あなたのコードで

、あなたが言う、論理チェックが必要です:

  • ifをスコープを逃すと、同意のためのthenプロンプト再び

あなたは直接、次のクエリ文字列を追加することで同意を求めることができますログインURLに:&prompt=consent

それ以外の場合は、PromptBehaviorパラメータをADALに使用できます。

+0

シングルテナントアプリではこれはまだかなり簡単ですが、マルチテナントではもう少し難しくなります:) – juunas

関連する問題