2016/11/28 15:47、Tatsumi Hosokawa <xxxxxxxx@xxxxxxxxxxxxxx>のメール:
慶應義塾ITC本部の細川です。
やってみたところ、先程成功しましたが、若干の疑問点が残っています。
テスト構築はIdP 3.2.1, SP 2.6.0で行いました。
まず、Shibboleth IdP(IdP A)のサーバにShibboleth SP(IdP B)をインストールし、
Location /idpをShibboleth(IdP B)で認証するように設定しました。
その上で、Shibboleth IdP(IdP A)のサーバに次の設定を行いました。
1. /etc/shibboleth/shibboleth2.xmlで、<ApplicationDefaults>のところに、
attributePrefix="AJP_"を追加する
2. /opt/shibboleth-idp/conf/idp.propertiesの
idp.authn.flows= Password
を
idp.authn.flows= RemoteUser
に変更
3. 存在しなければ /opt/shibboleth-idp/webapp/WEB-INF/web.xmlを
/opt/shibboleth-idp/edit-webapp/WEB-INF/web.xmlにコピー
4. /opt/shibboleth-idp/edit-webapp/WEB-INF/web.xmlの
<servlet>
<servlet-name>RemoteUserAuthHandler</servlet-name>
<servlet-class>net.shibboleth.idp.authn.impl.RemoteUserAuthServlet</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
の部分を
<servlet>
<servlet-name>RemoteUserAuthHandler</servlet-name>
<servlet-class>net.shibboleth.idp.authn.impl.RemoteUserAuthServlet</servlet-class>
<init-params>
<param-name>checkHeaders</param-name>
<param-value>UIDとして参照させたい属性名(Shibboleth SPからアクセスする属性名)</param-value>
</init-params>
<load-on-startup>2</load-on-startup>
</servlet>
に変更
これだけでIdP AのSPをIdP Bで認証できました(意外に簡単ですね)。
現在の疑問点は、IdP Bに存在してIdP Aに存在しないユーザを認証させた場合、
IdP Aで認証エラーが出るのではなく、IdP Aから遷移したIdP AのSP側で、
必要な属性が送られていないがゆえのエラーが出てしまうことです。
私の方でももう少し原因を追ってみますが、これはそういう仕様なのでしょうか?
何れにせよ、有用な情報、ありがとうございました。
よろしくお願いします。
細川
On 2016/11/25 8:43, Tatsumi Hosokawa wrote:
秋山様 やまじ様
情報、ありがとうございます。
私も昨日RemoteUserAuthenticationというものを発見し
(Basic Authentication Shibbolethというキーワードで出てきました)、
これが使えないかな、と思って環境構築を始めたのですが、
使った実例もあるということで少し安心しました。
昨日、テスト用IdPサーバにShibboleth SPをインストールするところまでは作業を行ったので、
ご紹介いただいたサイトを見ながら、テストを続けてみたいと思います。
よろしくお願いします。
細川
On 2016/11/24 22:23, Toyokazu Akiyama wrote:
京都産業大学の秋山です.
2年ほどの話なので,最新状況はわかりませんが,IdP01のRemoteUser認証の設定など(ExternalAuthなどもありました)を有効にし,IdP01のhttps://idp.domain/idp/Authn/RemoteUser <http://idp.domain/Authn/RemoteUser>をSP02で保護し,SP02側のREMOTE_USERにuidやeppnなど必要な属性を指定しておくことで,このSP02の認証(IdP02での認証)に成功したユーザのみIdP01にログインさせるということができました.
Shibboleth IdP 3.0 だと以下のページに詳細が載っているようです.
https://wiki.shibboleth.net/confluence/display/IDP30/RemoteUserAuthnConfiguration <https://wiki.shibboleth.net/confluence/display/IDP30/RemoteUserAuthnConfiguration>
checkRemoteUserを使うと良いのでしょうか.
AJPの設定なども絡んでくるので,以下も参照すると良いかと思います.
https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPJavaInstall
取り急ぎ.
2016年11月24日 21:43 Kazu Yamaji <xxxxxx@xxxxxxxxx <mailto:xxxxxx@xxxxxxxxx>>:
やまじです。
On 2016年11月24日 12:46:50 JST, Tatsumi Hosokawa <xxxxxxxx@xxxxxxxxxxxxxx <mailto:xxxxxxxx@xxxxxxxxxxxxxx>> wrote:
>
>やりたいこととしては、あるShibboleth IdPの認証を他のShibboleth IdPで行いたい、
>つまり、Shibboleth IdPをShibboleth SP化したい、ということです。
1回目はSPがあるIdPにログインさせて、
アカウントをリンクした上で、2回目以降は
自動的にログインさせるというJavaのアプリ
なら、以前作ったことがあります。
想定されているのとは、ちょっと違いますでしょうか?
--
Kazu