2016-11-19 9 views
1

こんにちは、データベースのバックエンドとしてMySQLを使用してPHPで書かれたアプリケーションを持っていて、私のAD紺碧からのログイン認証を使いたいと思います。php:情報付き単純な紺碧のログイン

私はいくつかのファイルの例をGoogleで検索しているが、私のニーズには複雑すぎます。

だから、私はこのようなリンクがあります。失敗したログイン後https://login.microsoftonline.com/common/oauth2/authorize?client_id=$myidclient&redirect_uri=$mydirapp&response_type=code

を、私はコード

私の問題という名前HTTP GET値で/mydirapp/index.phpにリダイレクトしています。(私のファイルのインデックスにこのユーザーのfirstnamelastname

012 - この認証 に使用 email address - の.php)私は
を取得したいです

私はこのGET値 'code' からトークンが必要であることを理解しています。このトークンによって、私はADを聞くことができます。

+0

こんにちは、@kadel、あなたは今更新がありますか? –

答えて

0

ログインが失敗しましたについてはわかりませんでした。実際、Azure ADは、OAuth 2.0の大規模なフローを実装して、ユーザーを認証して認証します。

あなたが提供したURLは、認証コードを生成するための最初のステップであり、このエンドポイントにユーザーを誘導し、失敗した認証が行われた場合、そのユーザーはあなたのURIにリダイレクトされません。 IDPページにエラーメッセージが表示されます。

ユーザーがcodeパラメータを使用してuriにリダイレクトした場合、このユーザーはAzure ADで正常にサインオンしたことを意味します。

認証後、ユーザーはをサーバーに要求ヘッダーAuthorizationに設定する必要があります。あなたが認証されたユーザーの情報を取得したい場合は、次のコードスニペットを使用しようとすることができます:

$headers = getallheaders(); 
$token = (explode(' ',$headers['Authorization']))[1]; 
list($headb64, $bodyb64, $cryptob64) = explode('.',$token); 
$payload = json_decode(base64_decode($bodyb64)); 

echo $payload->{'family_name'}; 
echo $payload->{'given_name'}; 
echo $payload->{'upn'}; //email 

あなたはペイロードでサポートされる請求のためにhttps://docs.microsoft.com/en-us/azure/active-directory/active-directory-authentication-scenarios?toc=%2fazure%2factive-directory%2fdevelop%2ftoc.json#claims-in-azure-ad-security-tokensを参照することができます。

さらに詳しいことがありましたら、お気軽にお知らせください。

関連する問題