2017-03-12 21 views
0

SimpleSAMLPhpサービスプロバイダを使用してSSOを実装しています。シングルサインオン:SimpleSAMLPhpサービスプロバイダ実装

リモートのShibboleth IDプロバイダに自分のメタデータを提供し、テストアカウントを提供しました。

ユーザが自分のSPの特定のページにアクセスすると、IdPにリダイレクトされ、ログインし、IdPで提供された属性の束で自分のWebサイトにリダイレクトされます。この部分は動作します。

この部分は苦労しています。

ユーザーが別のサービスプロバイダーを介して同じIdPで認証してから自分のページにアクセスした場合、そのユーザーがすでに認証されていることをどのように知ることができますか?現在、私は再度ログインするよう求められています。

これを行うための設定値がありますか?または私は間違った方法を使用していますか?これは私がやっていることです。

$as = new SimpleSAML_Auth_Simple({REMOTE_AUTHSOURCE}); 
$as->requireAuth(); // this redirects to remote IdP login 
$attributes = $as->getAttributes(); 

ありがとうございます。

答えて

1

考慮する必要がある認証セッションは2つあります。 1つのセッションはあなたのアプリにあり、もう1つはIdPにあります。 requireAuthメソッドは、ユーザーが既にアプリケーション内に認証されたセッションを持っているかどうかを知ることができ、その場合すぐに戻ります。 ブラウザにIdPでセッションがあるかどうかを確認する方法はありません。 requireAuthを呼び出してそこにユーザを送り、IdPがユーザのセッションがまだ有効であると判断した場合、ログインのプロンプトなしで応答します。

ユーザーはIdPで有効なセッションを持っており、そこにユーザーを送信するときに認証を求めるプロンプトが表示されていますか?これはIdPポリシーのためか、アプリがAuthnRequestで 'forceAuth'のようなものを送信している可能性があります。

関連する問題