2017-02-07 21 views
0

私はPHPで書かれていますが、特定のユーザーに与えられた役割が割り当てられているかどうかを確認する必要があります。私は、Azure App Serviceを使用してアプリサービス認証を有効にして、晴れたアクティブディレクトリに対してユーザーを認証しています。アプリケーションの一環として、ユーザーのユーザー名、表示名、およびアプリケーション内のアクセスレベルを定義するための3つのセキュリティグループのうちの1つまたは複数のメンバーであるかどうかを確認する必要があります。Azure ADのユーザーロールをPHPで取得

私はアプリケーション内で管理されたロールを持つことができないので、この方法で行う必要があります。代わりに、アクティブなディレクトリセキュリティグループを通じて管理する必要があります。私はアズールアプリサービスにネイティブな方法を探しています(できるだけ別のLDAPルックアップを行わないのが理想的です)。私はアプリケーションに送信されたヘッダデータから認証されたユーザ名を抽出する方法を知っていますが(HTTP_X_MS_CLIENT_PRINCIPAL_NAME)、完全な表示名を取得する方法と、ユーザに特定のロールが割り当てられているかどうかをチェックする方法はわかりません。私はすでに全体のコピーを出力した$_SERVERスーパーグローバル配列私が探しているデータがそこにあるかどうかを確認するが、私はそこにそれを見つけることができません。この質問の目的のために

は、以下の仮定を作る...

[email protected]役割が割り当てられているROLE1、role2の、role3
[email protected]が割り当てられている役割は、

をrole3

いずれかのユーザーがログインすると、ADエントリに基づいてフルネームを表示できる必要があり、セキュリティグループrole1role2および/またはrole3の一部であるかどうかを確認する必要があります。

私はコードの例を投稿しますが、このデータを取得することから始めてどこにいなくても、これまでの唯一のコードはテスト目的のページにすべての$_SERVERの値を印刷するテストブロックです。

おかげ

答えて

0

は、一般的に、あなたがヨーヨーがあなたの要件を達成Microsoft Graph REST APIsを活用することができ、話します。

まず、https://graph.microsoft.io/en-us/docs/authorization/app_onlyにアクセスして、アプリケーションでアクセストークンを取得する機能を実装し、次にList memberOfのHTTP要求を作成して、ユーザーが直接のメンバーであるグループとディレクトリの役割を取得することができます。

HTTP GET URLはhttps://graph.microsoft.com/v1.0/users/{HTTP_X_MS_CLIENT_PRINCIPAL_NAME you get from header}/memberOfのようになり、上記のアクセストークンをauthorizationヘッダーに設定します。

さらに、https://github.com/Azure-Samples/active-directory-php-graphapi-directoryextensions-web/blob/master/AuthorizationHelperForGraph.phpのサンプルを参照すると、アプリ内のアクセストークンの取得方法がわかります。

関連する問題