3

Azure AD を介して Office365 ディレクトリに新しいユーザーを作成できる Web アプリケーションを構築しています。

ユーザーは匿名でサイトにアクセスしますが、サイトへのアクセスが許可されていることを確認するために、事前にトークンコードを取得します (直接交換)。ユーザーは、いくつかの連絡先情報 (名前、場所など)、トークン コードを入力し、フォームを送信すると、アプリによって新しいアカウントが作成されます。

問題: Office365 組織の AAD でオブジェクトを作成するための認証とアクセス許可が必要です。私はすでにアプリを登録しており、アカウントレベルで認証が機能しています。問題は、使用している MVC5 テンプレートでサービス間認証を開始する場所がわからないことです。

通常、Office365 グラフ API を介して事前共有シークレットを使用して Azure AD のトークンを要求し、その後の要求でこのトークンを使用すると思いますか?

誰かが共有できる例はありますか?

4

1 に答える 1

3

あなたはこれを行うための正しい軌道に乗っています。次の手順を実行する必要があります。

  • AD で、Web アプリケーション用の「アプリケーション」を作成する必要があります (既に作成済みだと思います)。
  • アプリケーションの [構成] タブで、アプリケーションのアクセス許可を Windows Azure Active Directory の既存のアプリケーションに割り当てる必要があります。この場合、アプリケーションにはおそらく完全なDirectory.ReadWrite.Allアクセス許可が必要です。アズール ポータル
  • アプリケーションの新しいキーを作成します (まだ作成していない場合)。

参照: https://msdn.microsoft.com/Library/Azure/Ad/Graph/howto/azure-ad-graph-api-permission-scopes

これで、Azure AD REST API にアクセスするために、Graph API を使用してクライアント資格情報フローを実行するように設定されましPOSTた。次のエンドポイントに対して a を実行します。

https://login.microsoftonline.com/(your AD tenant ID)/oauth2/token
Content-Type: x-www-form-urlencoded

grant_type=client_credentials
&client_id=(your webapp client id)
&client_secret=(the key you just created)
&resource=https://graph.windows.net

このリクエストにより、(できれば) アクセス トークンが返され、Graph API と通信できるようになります。

ADAL または同様の SDK を使用してこれを行うこともできますが、これはバックグラウンドで行われます。

アクセス トークンをAuthorizationヘッダー コンテンツとして使用すると、ドキュメント ( https://msdn.microsoft.com/en-us/library/azure/ad/graph/howto/azure-ad- graph-api-operations-overview )、たとえば次のように:

GET https://graph.windows.net/(your AD domain)/users?api-version=1.5 HTTP/1.1
Authorization: eyJ0eXAiOiJKV1QiL...

次のような応答が返されます。

200 OK

{
  "odata.metadata": "https://graph.windows.net/(your domain ID)/$metadata#directoryObjects/Microsoft.DirectoryServices.User",
  "value": [
    {
      "odata.type": "Microsoft.DirectoryServices.User",
      "objectType": "User",
      "objectId": "(some GUID)",
      "deletionTimestamp": null,
      "accountEnabled": true,
....

エンドポイントに投稿すると、/users?api-version=1.5ユーザーが作成されます。

于 2016-01-14T07:54:44.863 に答える