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

[upki-fed:102] Re: IdP側での属性設定



伊東先生

京大の古村です.

From: Yasuo Okabe <xxxxx@xxxxxxxxxxxxxxx>
Date: Tue, 10 Nov 2009 10:32:54 +0900

>京大では OpenLDAP で LDAP proxy させてそこに外部スクリプトを挟むやり方を
>取っています。
>(古村先生、フォローよろしく)

京大では,IdP と認証用LDAPの間に,プロキシ的に動作する OpenLDAP
を立て,その中で perl モジュールを呼び出して,必要な形式に変換し
ています.

今回の目的では秋山先生の書かれている方法の方が良いように思います
が,複雑な変換処理を行ったり shibboleth との組合わせ以外でも使え
るという点ではこの方法も役に立つと思います.


OpenLDAP では slapd.conf に下記のような記述をすると,o=hoge 配下
へのアクセス時に /usr/local/etc/openldap/LDAPproxy.pm が呼ばれま
す.
----------
database        perl
suffix          "o=hoge"
perlModulePath  /usr/local/etc/openldap/
perlModule      LDAPproxy
----------

perl モジュールの中身については,OpenLDAP 付属の SampleLDAP.pm や
man slapd-perl を見て頂くのが良いと思いますが,簡単に言うと,
search や add などのLDAPのコマンドと同名の perl のメソッドを書い
てやることになります.

私がハマったのは,マニュアルにも SampleLDAP.pm にも bind (LDAP的
なbind)に関する記述が無いのですが,bind メソッドも作らないと動か
なかった事です.
bind メソッドの中身は下記のような感じになります.

sub bind
{
        my $this = shift;
        my ( $dn, $cred ) = @_;

#	print STDERR "LDAPproxy::bind dn = $dn, cred = $cred\n";

	if ($dn eq "cn=admin,o=hoge" && $cred eq "password"){
	        return 0; # success
        }else{
		return 1; # fail
	}
}

>> 九大でもIdPの準備を進めてまして,基本的なIdP構築と,
>> 認証用LDAPサーバとの接続などを試しております。
>> 
>> 質問ですが,IdP側の属性値設定で,attribute-resolver
>> などから外部スクリプトを呼び出すような事は可能でしょうか。
>> WebサーバのCGIプログラムのような感じを想定しています。
>> 
>> 九大にも全学共通認証基盤としてのLDAPサーバがあるのですが,eduPersonAffiliateに設定されるべき,学生(student)
>> や職員(faculty)といった属性値が有りません。
>> 
>> UserIDの文字列で,学生か職員かは区別ができるので,
>> 文字列処理スクリプトを間に挟むことができれば,
>> 属性値の設定が簡単にできます。
>> 
>> LDAPのツリー(DNの文字列)でも区別可能なので,そこら
>> へんの処理を気軽にしたいのです。
>> 
>> もし,ご存知のかたがいらっしゃれば,ご教授ください。
>> # 色々調査するのに疲れてしまってまして。。。

----
   _θθ_   |古村 隆明 @ 京都大学学術情報メディアセンター|
  (≡⊥≡)○| KOMURA Takaaki <xxxxxx@xxxxxxxxxxxxxxxxxxx> |
○~=Θ=/