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

[upki-fed:314] Re: Webアプリケーションのシボレス化について



皆様

明治大学図書館の中林です。
表題の件ですが,いろいろと情報をいただきありがとう
ございました。
本学図書館の独自SSOサーバ(tomcat+struts)をSP化するためにテストしてみましたので
簡単に報告いたします。

環境
apache-2.2.17 with mod_proxy_ajp
apache-tomcat-5.5.27
shibboleth-2.4-2.3

設定
shib.confへ以下の記述を追加
<Location /sso/shibboleth>
  AuthType shibboleth
  ShibRequestSetting requireSession 1
  require valid-user
  ShibUseHeaders On <- これがないと,HTTPヘッダ内にIdpからの情報が含まれない
</Location>

shibboleth2.xmlを修正
    <ApplicationDefaults entityID="https://nagato.mind.meiji.ac.jp:4430/shibboleth-sp"
                         REMOTE_USER="persistent-id"
                         signing="false" encryption="false"
                        attributePrefix="AJP_">

設定はこれで完了。SPを再起動して,認証させる。


Servlet側でデバッグすると以下のような感じになります。

(String)request.getAttribute("Shib-Identity-Provider"));
(String)request.getAttribute("eppn"));
(String)request.getAttribute("persistent-id"));
といった感じでデバッグすると,

[2011-01-14 16:23:54,687][DEBUG]:  REQUEST DEBUG : Shib-Identity-Provider : https://servs.lib.meiji.ac.jp/idp/shibboleth
[2011-01-14 16:23:54,687][DEBUG]:  REQUEST DEBUG : eppn : ?????????@lib.meiji.ac.jp
[2011-01-14 16:23:54,687][DEBUG]:  REQUEST DEBUG : persistent-id : https://servs.lib.meiji.ac.jp/idp/shibboleth!https://nagato.mind.meiji.ac.jp:4430/shibboleth-sp!+????????
となります。

あと,shib.confに
  ShibUseHeaders On
を設定すると,request headerにAJP側から送られたキーと値がセット
されます。

デバッグすると
Enumeration reqHeaders = request.getHeaderNames();
while(reqHeaders.hasMoreElements()){
  headerName = (String)reqHeaders.nextElement();
    reqValue = (String)request.getHeader(headerName);
    log.debug("    " + headerName + " : " + reqValue);
}
といった感じの処理で,結果としては
[2011-01-14 16:23:54,687][DEBUG]:    AJP_Shib-Session-ID : _356d85daa5d493bf3953c9244fac4816
[2011-01-14 16:23:54,687][DEBUG]:    AJP_Shib-Session-Index : 15fbb05230eadfa4aab0d8dc4a092ab7d5e69c826a1ecbd66872ff34dddf9d53
[2011-01-14 16:23:54,687][DEBUG]:    AJP_Shib-Identity-Provider : https://servs.lib.meiji.ac.jp/idp/shibboleth
[2011-01-14 16:23:54,687][DEBUG]:    AJP_Shib-Authentication-Method : urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
[2011-01-14 16:23:54,687][DEBUG]:    AJP_Shib-Authentication-Instant : 2011-01-14T07:22:04.618Z
[2011-01-14 16:23:54,687][DEBUG]:    AJP_Shib-AuthnContext-Class : urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
[2011-01-14 16:23:54,688][DEBUG]:    AJP_Shib-AuthnContext-Decl : 
[2011-01-14 16:23:54,688][DEBUG]:    AJP_Shib-Assertion-Count : 
[2011-01-14 16:23:54,688][DEBUG]:    AJP_eppn : ???????@lib.meiji.ac.jp
[2011-01-14 16:23:54,688][DEBUG]:    AJP_affiliation : 
[2011-01-14 16:23:54,688][DEBUG]:    AJP_unscoped-affiliation : 
[2011-01-14 16:23:54,688][DEBUG]:    AJP_entitlement : 05
[2011-01-14 16:23:54,688][DEBUG]:    AJP_targeted-id : 
[2011-01-14 16:23:54,688][DEBUG]:    AJP_persistent-id : https://servs.lib.meiji.ac.jp/idp/shibboleth!https://nagato.mind.meiji.ac.jp:4430/shibboleth-sp!+????????
といった情報が設定されてきます。
ShibUseHeaders Onをはずしても,request.getAttributeで変数名を
指定すれば,問題なく値は引けるようです。

あと,REMOTE_USERもshibboleth2.xmlの指定に合せてセットされます。

簡単ですが,以上です。

それでは今後ともどうぞよろしくお願いします。

-- original message --
From: Toyokazu Akiyama<xxxxxxx@xxxxxxxxxxxxxxxxxx>
To: upki-fed<xxxxxxxx@xxxxxxxxx>
Cc: gakunin-tf<xxxxxxxxxx@xxxxxxxxx>
Sent: Tue, 30 Nov 2010 16:43:04 +0900
Subject: [upki-fed:285] Re: [upki-
 fed:269] Re: Webアプリケーションのシボレス化について

>京都産業大学の秋山です.
>
>別件で Java EE をバックエンドに利用したアプリケーションの Shibboleth 化について
>少し見ていたのですが,Shibboleth SP の shibboleth2.xml に以下のページにあるような
>設定をすることで,AJP を経由して Shibboleth 属性を受け渡し,Java の Application
>Container 側(Tomcat, Jetty 等)では環境変数として取得できるようです.
>
>https://spaces.internet2.edu/display/SHIB2/NativeSPJavaInstall
>
>% vi shibboleth2.xml
>...
><ApplicationDefaults id="default" policyId="default"
>    entityID="https://sp.example.org/shibboleth"
>    REMOTE_USER="eppn persistent-id targeted-id"
>    signing="false" encryption="false"
>    attributePrefix="AJP_">
>
>これで
>request.getAttribute("Shib-Identity-Provider")
>で取得可能になるようです.
>
>このあたりの情報(Apache の mod_proxy_ajp, mod_proxy_balancer 等を使うケース)
>については以下のページあたりにまとめられていると良いのかなぁ,と思いました.
>
>https://upki-portal.nii.ac.jp/docs/fed/technical/sp/WebApp
>
>以上,全く動作確認していませんが (^^;; お知らせまで.
>
>2010年10月26日13:43 Toyokazu Akiyama <xxxxxxx@xxxxxxxxxxxxxxxxxx>:
>> 筑波大学 佐藤先生
>>
>> 京都産業大学の秋山ともうします.
>> # Servlet には全く詳しくありませんが...
>>
>> 本家サイトに環境変数の取得方法についてまとめられています.
>>
>> https://spaces.internet2.edu/display/SHIB2/NativeSPAttributeAccess
>>
>> ページの下の方の Java という項目にサンプルコードが添付されています.
>>
>> Request Headers の項目に書かれているとおり,一部の Web Server では,
>>
>> <Location /secure/>
>>  AuthType shibboleth
>>  require valid-user
>>  ShibUseHeaders On
>>  ^^^^^^^^^^^^^^^^^^^^
>> </Location>
>>
>> のような設定を追加しないと,環境変数を渡せないケースがあるようです.
>> # この場合は request.getHeader を使うことになりますね.
>> Apache だと大丈夫なようですが.
>>
>> 以上です.
>>
>> 2010年10月26日12:53 Akira SATO <xxxxx@xxxxxxxxxxxxxxxx>:
>>> 山形大学 伊藤先生
>>>
>>> こんにちは,筑波大学の佐藤です.ありがとうございます.
>>>
>>> 何がしたいといった具体的な案があるわけではないのですが,
>>> Web上でワークフローに従った処理を実現したいと考えています.
>>> その際の認証にshibbolethを使いたいと思っています.
>>>
>>> Apacheのmod_shibを使えば,アプリケーションからは
>>> 属性情報は環境変数で受け取ることができることは理解しました.
>>>
>>> JAVAのサーブレットから,環境変数へのアクセスの仕方がわからない
>>> (できないのではないかと思っています)ので,質問させいただきました.
>>>
>>> サーブレットフィルタを使えばよさそうな気がしますが,そのあたりで
>>> いいツールを御存じの方がいらっしゃいましたら,情報提供をおねがいします.
>>>
>>>
>>> (2010/10/24 20:31), Tomohiro Ito wrote:
>>>> 筑波大学 佐藤様
>>>>
>>>> 山形大学の伊藤ともうします。
>>>>
>>>> JAVAでは、ありませんが、asp .NETでの開発で、山形大学で実施した内容を
>>>> 簡単に説明します。
>>>>
>>>> 山形大学では、クラスの継承機能を使って、コードの簡素を行っているのですが、
>>>> そのなかで、基本認証の処理のクラスと一緒にするか、迷ったのですが、
>>>> 結果的にシボレス認証の処理クラスは、別(shibboleth_toolsクラス)に実装
>>>> しました。このShibboleth_toolsクラスを基本認証の処理クラスで利用できる
>>>> ように、プロパティーやメソッドの名前空間だけは別にしてあります。
>>>>
>>>> Shibboleth_toolsでは、プロパティ変数として、下記の内容を
>>>> 参照できるようにしてあります。
>>>>
>>>> ・シボレス認証であるか?(bShibbolethAuthenticated As Boolean)
>>>> ・各種属性の値
>>>>
>>>> 開発の仕方によると思うのですが、ASP .NETでは、クラスの継承をつかって
>>>> できるだけど、コードは使いまわすようにしてあります。
>>>>
>>>> あくまで、概要です。具体的に、やりたい内容がわかりますと、VBのコードに
>>>> なりますが、抜粋して、実装例などを示すことが可能です。
>>>>
>>>> 以上。簡単ですが、コメントいたします。
>>>>
>>>> ------------------------------------------------
>>>> 山形大学 大学院理工学研究科 伊藤智博/ Tomohiro Ito
>>>> E-mail: xxxxxxxxxxxx@xxxxxxxx
>>>> https://a.yamagata-u.ac.jp/amenity/Employee/EmployeeWeb.aspx?nEmployeeID=1434
>>>>
>>>>
>>>>
>>>>> -----Original Message-----
>>>>> From: xxxxxxxxxxxxxx@xxxxxxxxx [mailto:xxxxxxxxxxxxxx@xxxxxxxxx] On Behalf Of
>>>>> Akira SATO
>>>>> Sent: Saturday, October 23, 2010 8:46 AM
>>>>> To: xxxxxxxx@xxxxxxxxx
>>>>> Subject: [upki-fed:269] Re: Webアプリケーションのシボレス化について
>>>>>
>>>>> 皆様
>>>>>
>>>>> こんにちは,筑波大学の佐藤と申します.シボレス化されたWebアプリケーショ
>>>>> ンに興味を持っています.
>>>>>
>>>>> 便乗質問で申し訳ないのですが,
>>>>> 私はJAVAを使ったSPの開発に興味があるのですが,
>>>>> いい方法をご存知の方がいらっしゃいましたら
>>>>> 教えていただけないでしょうか?
>>>>>
>>>>> --
>>>>> 筑波大学 情報環境機構
>>>>> 学術情報メディアセンター ネットワーク研究開発部門 佐藤聡
>>>>> Email:xxxxx@xxxxxxxxxxxxxxxx tel:029-853-5192
>>>
>>> --
>>> 筑波大学 情報環境機構
>>> 学術情報メディアセンター ネットワーク研究開発部門 佐藤聡
>>> Email:xxxxx@xxxxxxxxxxxxxxxx tel:029-853-5192
>>>
>>
>>
>>
>> --
>> Toyokazu AKIYAMA
>> Faculty of Computer Science and Engineering,
>> Kyoto Sangyo University
>> TEL/FAX: +81-75-705-1531
>>
>
>
>
>-- 
>Toyokazu AKIYAMA
>Faculty of Computer Science and Engineering,
>Kyoto Sangyo University
>TEL/FAX: +81-75-705-1531
>