2017-02-06 17 views
1

外部アプリケーションからSharePoint [オンライン] REST APIにアクセスしようとしています。管理者アカウントでAzureに登録し、適切なユーザ委任権限(Office 365 SharePoint Online)を割り当てました。ADALによるAzure AD OAuth認証:リソースIDは何ですか?

私はADAL.jsを使用してacquireTokenを呼び出し、そのトークンをAuthorizationヘッダーに使用します。有効な-探しトークンが付属なっているが、私は反応して、次の401エラーを取得しています:

Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown

acquireToken()メソッドはresourceのparamがかかります、と私はオンライン何を読んでからSharePoint APIのこの値はhttps://[tenant].sharepoint.comである必要がありますが、nullベアラトークンのみを返します。

代わりに(以前の401エラーを引き起こす)私はAzureで生成されたアプリIDにリソースを設定するだけです。これは、私のlocalStorageキャッシュにトークンとして設定されてしまうことになります。ベアラートークンが返ってきますが、私は例外を受け取ります。

つの質問:

  1. リソース文字列で、何何がacquireToken()を呼び出すための適切な値であり、見て私のアプリのIDとそれを呼び出す(同じこと私はとして使用していること私のADAL設定のクライアントID)は、ベアラトークンを正常に返す唯一の値ですか?各Microsoft APIに適切なリソース文字列のリストはありますか?私はこのトピックに関するドキュメントを見つけるのに苦労してきました。

  2. Azureの設定に問題はありますか?

ありがとう!

+0

あなたはこれを理解することができますか?私は同じ問題を抱えている。追加のレスポンスヘッダーが返されました(x-ms-diagnostics:3000003; reason = "無効なユーザーUri 'f8f8d2ad-7c9d-4aac-80eb-3f00a263c879';カテゴリ=" invalid_client ") – Russellg

答えて

2

SharePointオンラインRESTを使用するには、ディスカバリサービスRESTを使用してSharePointサービスエンドポイントを検索できます。すべてのサービスリソースIDは、serviceResourceIdの応答から見つけることができます。

Microsoft Graphを使用すると、Office 365や他のMicrosoftクラウドサービスの複数のAPIを1つのエンドポイントで公開することもできます。

検出サービスREST APIの詳細は、hereを参照してください。

関連する問題