[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[upki-fed:01093] Re: Shibboleth IdPのShibboleth SP化について



慶應義塾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




--
Toyokazu AKIYAMA
Faculty of Computer Science and Engineering,
Kyoto Sangyo University
TEL/FAX: +81-75-705-1531 <tel:%2B81-75-705-1531>




--
慶應義塾ITC本部  細川達己  xxxxxxxx@xxxxxxxxxxxxxx
Tel. 03-5427-1685  Fax. 03-5427-1722