大学教育の質の保証・向上ならびに 電子化及びオープンアクセスの推進の観点から 学校教育法第百十三条に基づき、 教育研究活動の状況を公表しています。
第百十三条 大学は、教育研究の成果の普及及び活用の促進に資するため、その教育研究活動の状況を公表するものとする。
シボレス Shibboleth IdP 2.4.0 からSLOの機能が追加されました。 【関連ノート】 ・Google AppsのSSO時のLogout(Shibboleth IdPを使った場合)⇒#1979@ノート; ・SharePoint - ADFS - Shibboleth IdpのSLOの試験運用⇒#1978@ノート; ・シボレス-シングルログアウト実験中(Shobboleth SP 2.5.2 - IdP 2.4.0)⇒#1981@ノート;
2013年8月1日,山形大学は,SAML2認証トークンのIdPがOpen Identity Exchange (OIX)のLoA1(第1保証水準)に認定されました. OIX 認定プロバイダーリスト:http://openidentityexchange.org/certified-providers 学認-OIX LoA 1 認定プログラム:https://www.gakunin.jp/docs/fed/loa/loa1program 国立情報学研究所プレスリリース: http://www.nii.ac.jp/news/2013/0821 カレントアウェアネス-E: http://current.ndl.go.jp/e1482 山形大学プレスリリース: http://www.yamagata-u.ac.jp/jpn/university/press/press20130905.pdf 【関連発表】山形大学のLoA1の申請と認定まで⇒#97@講演; 【ノート】LoA1に対応したIdPの設定⇒#1998@ノート; 【関連動画】 ピカッとさいえんす「暗号とセキュリティ」: http://www.youtube.com/watch?v=S8XfXsloeqI
LoA1に対応したIdPの設定 tomcatの配下のweb.xmlに下記の内容を追加 <!-- Servlet for doing LoA1 Username/Password authentication --> <servlet> <servlet-name>UsernamePasswordLoA1AuthHandler</servlet-name> <servlet-class>edu.internet2.middleware.shibboleth.idp.authn.provider.UsernamePasswordLoginServlet</servlet-class> <load-on-startup>3</load-on-startup> <!-- for OIX-LoA1 --> <init-param> <param-name>authnMethod</param-name> <param-value> http ://idmanagement.gov/icam/2009/12/saml_2.0_profile/assurancelevel1 </param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>UsernamePasswordLoA1AuthHandler</servlet-name> <url-pattern>/Authn/UserPasswordLoA1</url-pattern> </servlet-mapping> handler.xmlに下記の内容を追加 <!-- Username/password LoA1 login handler --> <LoginHandler xsi:type="UsernamePassword" jaasConfigurationLocation="file:///opt/shibbole
UPKI(学認;Gakunin)用Shibboleth IdPでGoogle Apps SSO(シングルサインオン)を利用する方法 ★ポイント:transientId(urn:oasis:names:tc:SAML:2.0:nameid-format:transient)を送信するとエラーになるみたいです. ★ログアウト:Shibboleth IdP 2.4.0からはSLO(Single LogOut)が実装されたので可能になりました⇒#1979@ノート;. ・関連URLの2の資料(https://shibboleth.usc.edu/docs/google-apps/)を参考に基本設定を行う。 動作の概要ですが、 SAMLアサーション⇒#48@シボレスページレビュー;によって、 <saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"> にて、ユーザ名(@より前の情報)のみがGoogleに転送されます。 Google Appsの方に、ユーザ名を登録してあると利用できる仕組みになっています。Google Appsに登録していないユーザは利用できないようです。 ・attribute-filter.xmlを変更する。 <AttributeFilterPolicy id="releaseTransientIdToAnyone"> <PolicyRequirementRule xsi:type="basic:NOT" > ← <basic:Rule xsi:type="basic:AttributeRequesterString" value="google.com" /> ← </PolicyRequirementRule> ← attribute-filter.xmlを変更する理由は、Google Appsに、不要な属性情報(transient IDなど)が転送されると正常に認証トークンが成立しないようです。PolicyRequirementRule xsi:type="basic:Any"が存在する場合は、調整する必要があるようだ⇒#47@シボレスページレビュー;。 【関連URL】 1. "Google
Google AppsをShibboleth IdPでSSOを実現した場合のログアウト処理 Google AppsをShibboleth IdPとSAML連携によるシングルサインオン(SSO)を実現した場合,ログアウトの処理ができないため,ブラザーを閉じる必要があった. シボレス(Shibboleth) IdP 2.4.0よりシングルログアウト(SLO)が実装されたのでGoogle Appsもログアウト処理が可能になったようである.具体的な設定方法を下記に示す. Google Appsに管理者でログインし, シングル サインオン (SSO) の設定の ログアウト ページ URL を Shibboleth IdPのhandler.xmlに記述した ProfileHandler xsi:type="SAML2SLO" inboundBinding="urn:mace:shibboleth:2.0:profiles:LocalLogout"の要素内のRequestPathの子要素の値 をもとに、下記の例に従って決定できる. たとえば, vhost名: idp.yz.yamagata-u.ac.jp Proxyパス: /idp/ handler.xmlのRequestパス: /Logout の場合、 https://idp.yamagata-u.ac.jp/idp/profile/Logout とする. 【開発環境】 IdP: Shibboleth IdP 2.4.0 (学認対応)⇒#1982@ノート; 【ノート】 ・UPKI(学認)用Shibboleth IdPでGoogle Apps SSOを利用する方法⇒#1141@ノート; ・SharePoint - ADFS - Shibboleth IdpのSLOの試験運用⇒#1978@ノート; ・シボレス-シングルログアウト実験中(Shobboleth SP 2.5.2 - IdP 2.4.0)⇒#1981@ノート; 【標準的なidpのLocalLogoutの定義】 <ProfileHandler xsi:type="SAML2SLO" inboundBinding="urn:mace:shibboleth:2.0:profiles:LocalLogout">
2013年7月24日から,サイバーキャンパス「鷹山」のシボレス認証(学認ログイン)をシングルログアウト(SLO)に対応にしました.試験運用ですので,不具合が生じるかもしれませんが,徐々に改善していきます.ご了承のほどお願いします. セキュリティ対策のため,クエリー文字列数を制限している場合,シボレスのディレクトリ配下は,2048文字程度にしましょう. 【試験環境】 ・Shibboleth IdP 2.4.0(学認対応)⇒#1982@ノート; ・Shibboleth SP 2.5.2(学認対応) < Windows 2008 R2 ●SLOに対応したメタデータ例:https://a.yamagata-u.ac.jp/amenity/network/ShibbolethMetaXml.aspx?ProjectID=14 【ノート】 ・Google AppsのSSO時のLogout(Shibboleth IdPを使った場合)⇒#1979@ノート; ・SharePoint - ADFS - Shibboleth IdpのSLOの試験運用⇒#1978@ノート;
SharePointとADFSとShibboleth IdP連携した認証トークンのシングルログアウト(SLO) Microsoft Sharepoint サーバを学認ログイン(SAML2準拠認証トークン)に対応するためには、ADFSサーバを経由してShibboleth IdPにSAML認証することで実現できる⇒#18239@業績;。 SharePointサーバのサインアウト時に、Shibboleth IdPおよびADFSのセッションを終了し、正常にログアウトできるようにする。 ★ 2013年7月21日より試験運用開始 ★ 【開発環境】 IdP: Shibboleth IdP 2.4.0(学認対応)⇒#1982@ノート; ADFS: ADFS 2.0 SP: SharePoint 2010 Foundation ●SLOに対応したメタデータ例: https://a.yamagata-u.ac.jp/amenity/network/ShibbolethMetaXml.aspx?ProjectID=14 【ノート】 ・Googel AppsのSSO時のLogout(Shibbolethを使った場合)⇒#1979@ノート; ・シボレス-シングルログアウト実験中(Shobboleth SP 2.5.2 - IdP 2.4.0)⇒#1981@ノート;
ADFSのHome Realm DiscoveryPageに候補のIdPを表示するようにカスタマイズ 利用者のIPアドレスを識別して,候補のIdPを表示すると便利かなぁー. 本学の場合,133.24.x.xと2001:df0:25e:xxx::y という IPアドレスが使われています. 133.24.1.1というIPで最初に接続したときは,候補がないので,候補なし で表示され,山形大のIdPを選択するとDBベースに, 133.24.1.1は,山形大のIdPを1回と記録されます. そうすると,次に同じIPから接続した場合,133.24.1.1の候補は, 山形大のIdPと表示されます.このとき,山形大のIdPを選択すると 133.24.1.1は,山形大のIdPを2回と更新されます. 次に,山形大の別のIP(133.24.2.1)で接続を試みた場合, データベースの記録を133.24.2.1で検索して,候補がないので, 133.24.2.*で検索して,候補を探します.それでもないので, 133.24.*.*で検索して,候補を探すと,133.24.1.1のとき,山形大のIdPを 使った記録があるので,133.24.2.1には,山形大のIdPを 返事するようになります.候補が複数出た場合は,過去の利用回数の 多い順に参照します.(この写像の設計が勝負なので,ひとまず,開発中ということで...) 基本は,経路情報のロンゲストマッチと同じアルゴリズムで選択し,かつ, 利用回数の記録をもとに,徐々に修正していくようにしてあります. すなわち, IP = ディスティネーションIP 1/利用数 = メトリック(メトリックは距離を表しているので,利用回数を逆数) のような意味付けかなぁー. 伊藤智博,立…らは、2012年に香川大学 総合情報センターで開催された第7回国立大学法人情報系センター研究集会/第16回学術情報処理研究集会においてADFSによる学術認証フェデレーション対応SharePointサービスの構築について報告している⇒#324@学会;。
https://meatwiki.nii.ac.jp/confluence/display/GakuNinShare/IdPClustering
解決: WIFとシボレス IdPの認証連携(Shibboleth IdP → WIF) 課題:Shibboleth IdPとWIFの連携は難しい⇒#1820@ノート; ADFSは,シボレス(SAML2.0)とWS-Federationの認証プロキシとしても動作 すなわち,ADFSの認証プロバイダをShibboleth IdPに設定可能. → WIFによるWebアプリケーションを学認に提供可能 WIFへの認証情報の流れとしては, Shibboleth IdP → ADFS → WIF となる. 伊藤智博,立…らは、2012年に香川大学 総合情報センターで開催された第7回国立大学法人情報系センター研究集会/第16回学術情報処理研究集会においてADFSによる学術認証フェデレーション対応SharePointサービスの構築について報告している⇒#324@学会;。
ADFS 2.0とShibboleth IdPは、 Claims Provider Trustとして登録することで、WSフェデレーションと連携できる. たとえば,シェアポイント(SharePoint)サーバにシボレスIdPによる認証でログインしたい場合, ・SharePointのクレーム認証サーバをADFS 2.0認証サーボスに指定する. ・次にADFS 2.0の認証プロバイダーをShibboleth IdPに設定する. この2つのプロセスによって,Windows系のADFS, WSフェデレーションとシボレスやSAML2.0を相互交換できる. ADFS 2.0サービスのポイントは,Shibboleth SPやWSフェデレーションのウェブサービスから見るとADFS 2.0は,IdPとして動作する.一方,Shibboleth IdPなどSAMLベースの認証プロバイダーから見るとADFS 2.0はSPとして動作するようになっている.
ADFSのIdPとシボレス(Shibboleth) SPの信頼データの管理 ADFSのIdPは,学術認証フェデレーション(学認;Gakunin)で、使っているような複数IdPやSPが記述されたメタデータを読み込むことはできない。 各SPのごとのEntityDescriptorを修正することで、ADFSにメタデータを読み込ませることが可能である。また、ADFSは、各SPごとに、メタデータを管理するURLを設定する方式であるため、SPごろにユニークなメタデータを生成するようにした。 本学のフェデレーション実験完了ではデータベースでメタデータを管理しているので、ADFSのIdPとシボレスSPのそれぞれのメタデータの各プロパティーをデータベースに登録し、それぞれの対応したメタデータを自動生成するようにした。 ・ADFS IdPに提供するSPのメタデータ(1つ目のSP)は、下記のURLのように変更した。 https://a.yamagata-u.ac.jp/amenity/network/AdfsSPMetadataXml.aspx?SPID=11 次のADFS 2.0のIdPで、下記ようなコマンドで、登録する。 Add-ADFSRelyingPartyTrust -Name c.yz.yamagata-u.ac.jp -MetadataURL HTTPS://a.yamagata-u.ac.jp/amenity/network/AdfsSPMetadataXml.aspx?SPID=11 -AutoUpdateEnabled 1 -MonitoringEnabled 1 -IssuanceAuthorizationRules '@RuleTemplate="AllowAllAuthzRule" => issue(Type = "http://schemas.microsoft.com/authorization/claims/permit", Value="true");' あとは、ADFSのIdPでは、自動的にURLを参照しながら、メタデータは、更新されるはずある。 また、シボレスSP側は、学認と同様のADFSのIdPのメタデータを読み込むことで正常に動作した。 参考メタデータ:https://a.yamagata-u.ac.jp/amenity/networ
学術認証フェデレーション(Gakunin;学認)用IdPの証明書の更新作業
Shibboleth IdP 2.2.1 リリース シングルサインオン用ミドルウェアのShibboleth(シボレス) IdP のバージョン 2.2.1が、2011/01/13にリリースされました。 リリースノートによると、2.2.0から約20箇所の変更が加えられたようです。 非公式ミラー: http://ftp.yz.yamagata-u.ac.jp/pub/shibboleth/shibboleth/idp/2.2.1/ IdP version 2.2.1 Released IdP version 2.2.1 was released on Jan 13, 2011. This release is a bug fix which, amongst other things, addresses security advisory 20110113.
Shibboleth IdPでStatic Attribute+LDAP属性の組合せ Shiboleth IdPを構築するときに、属性情報を固定値+LDAPから取得した属性を加えるときの設定方法を示す。 たとえば、eduPersonAffiliation⇒#3@SAML属性;に常に'member'属性⇒#1@属性値;を送信し、かつ、LDAPにそれ以外の情報があった場合に、用いた場合の設定例を下記にします。 <resolver:AttributeDefinition id="eduPersonAffiliation" xsi:type="Simple" xmlns="urn:mace:shibboleth:2.0:resolver:ad" sourceAttributeID="eduPersonAffiliation"> <resolver:Dependency ref="myLDAP" /> <resolver:Dependency ref="staticAttributes" /> <resolver:AttributeEncoder xsi:type="SAML1String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:mace:dir:attribute-def:eduPersonAffiliation" /> <resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.1" friendlyName="eduPersonAffiliation" /> </resolver:AttributeDefinition> <resolver:DataConnector id="staticAttributes" xsi:type="Static" xmlns="urn:mace:shibboleth:2.0:resolver:dc">
複数のメタデータ用署名の記述(Shibboleth IdP) シボレスIdPに複数のメタデータの署名確認用証明書の記述方法。 例) <security:TrustEngine id="shibboleth.MetadataTrustEngine" xsi:type="security:StaticExplicitKeySignature"> <security:Credential id="GakuninCredentials" xsi:type="security:X509Filesystem"> <security:Certificate>/opt/shibboleth-idp-2.1.5/credentials/gakunin-signer-2010.cer</security:Certificate> </security:Credential> <security:Credential id="UPKIfederationCredentials" xsi:type="security:X509Filesystem"> <security:Certificate>/opt/shibboleth-idp-2.1.5/credentials/upki-fed-signer-ca.cer</security:Certificate> </security:Credential> </security:TrustEngine>
Shibboleth IdP StoredID用のテーブルの作成 for MySQL CREATE TABLE IF NOT EXISTS shibpid ( localEntity TEXT NOT NULL, peerEntity TEXT NOT NULL, principalName VARCHAR(255) NOT NULL default '', localId VARCHAR(255) NOT NULL, persistentId VARCHAR(36) NOT NULL, peerProvidedId VARCHAR(255) default NULL, creationDate timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, deactivationDate timestamp NULL default NULL, KEY persistentId (persistentId), KEY persistentId_2 (persistentId, deactivationDate), KEY localEntity (localEntity(16), peerEntity(16),localId), KEY localEntity_2 (localEntity(16), peerEntity(16), localId, deactivationDate) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; 【関連ノート】 ・Shibboleth IdPのStoredIDの設定(MySQL)⇒#1484@ノート; ・UPKI-eduPersonTargetedIDの設定⇒#1137@ノート;
Shibboleth(シボレス) IdPのStoredIDの設定(MySQL) attribute-resolver.xmlに、下記の内容を記入する。 〇SAML1(Shib 1.3系)に対応するときは、下記の有効にする。 <resolver:AttributeDefinition id="eduPersonTargetedID.old" xsi:type="Scoped" xmlns="urn:mace:shibboleth:2.0:resolver:ad" scope="yamagata-u.ac.jp" sourceAttributeID="storedID"> <resolver:Dependency ref="storedID1" /> <resolver:AttributeEncoder xsi:type="SAML1ScopedString" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:mace:dir:attribute-def:eduPersonTargetedID" /> </resolver:AttributeDefinition> 〇SAML2.0(Shib 2.x系)に対応にするときは、下記を有効にする。 <resolver:AttributeDefinition id="eduPersonTargetedID" xsi:type="SAML2NameID" xmlns="urn:mace:shibboleth:2.0:resolver:ad" nameIdFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" sourceAttributeID="storedID"> <resolver:Dependency ref="storedID1" /> <resolver:AttributeEncoder xsi:type="SAML1XMLObject" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" /> <
Shibboleth IdPのログをSQLに記録する方法 Shibbolethのログをデータベースサーバ(SQL)に記録することによって、データベースの付加機能であるOLAPなどで集計を簡便にすることが期待される。 Shibboleth IdPのログをSQLサーバに記録するために、次の方法で可能にした。 Shibboleth IdPから、syslogdにログを転送し、syslogdからMySQLに送信するように設定した。 設定例) 〇Shibboleth IdP logging.xml <appender name="IDP_SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender"> <SyslogHost>localhost</SyslogHost> <Port>514</Port> <Facility>LOCAL6</Facility> <SuffixPattern>[%logger:%line] %msg</SuffixPattern> </appender> 〇rsyslog.conf local6.* :ommysql:localhost,データベース名,ユーザ名,パスワード 〇rsyslogdの起動オプションの変更 ch.qos.logback.classic.net.SyslogAppenderは、TCPでログメッセージを送信するので,/etc/init.d/rsyslog のSYSLOGD_OPTIONSを、下記のように変更した。 SYSLOGD_OPTIONS="-m 0 -r -t514 -l locahost " 〇MySQLへのテーブルの作成 CREATE TABLE SystemEvents( ID int unsigned not null auto_increment primary key, CustomerID bigint, ReceivedAt datetime NULL, DeviceReportedTime datetime NULL, Facility smallint NULL,
【IdP ERROR】Inbound message issuer was not authenticated. 2010/3/28にElsevier ScienceDirectとのシングルサインオンで発生。 現在、原因を調査中。 2010/6/28 山形大学のエルゼビア関係シングルサインオン暫定復旧⇒#1331@ノート; by
shibboleth IdPをLDAP Proxy経由でWindows Server 2003のAD(Active Directory)に認証する方法 事前に、ADに認証するために、OpenLDAPのslapdのLDAPプロキシ機能+overlay rwmの機能を使って、uidとsamaccountnameなどの属性マッピグをローカルLDAPに設定する⇒#1138@ノート;⇒#1185@ノート。 shibboleth IdPでLDAP Proxy経由でActive Directoryに認証する場合は、リフェラル(紹介)設定を有効にする必要がある。 具体的には、login.configとattribute-resolver.xmlの2つのファイルに注意しましょう。 また、動作を保証するものではありません。より良い設定方法がありましたら、教えていただけると幸いです。 2010年になって、GC(グローバルカタログ)を使うことで、リフェラルを有効にしなくても、動作することがわかりました⇒#1265@ノート;。 → リフェラルをつかうと、DCが1台でも停止すると認証に不具合が発生することがありますので、リフェラルを無効にして利用することを推奨します。 例)login.config edu.vt.middleware.ldap.jaas.LdapLoginModule sufficient host="localhost" base="dc=xxxxx,dc=yamagata-u,dc=ac,dc=jp" ssl="false" userField="uid" subtreeSearch="true" serviceUser="cn=xxxx,CN=Users,dc=xxxx,dc=yamagata-u,dc=ac,dc=jp" serviceCredential="xxxxx" referral="follow" <--重要みたい? 例)attribute-resolver.xml "<"、">"は全角文字に変化されていますので、半角にしてください。 <resolver:DataConnector id="myLDAP2" xsi:type="LD
シボレスのIPv6への対応状況 シボレス(Shibboleth) IdPがIPv6で動作するか、動作試験を行った。 【テスト環境】 ・CentOS 5.5 ・Shibboleth IdP 2.1.5 ・apache 2.2.13 【結果】 ・IPv4/IPv6-Dual Stack クライアント OK ・IPv4のみのクライアント OK であった。 【設定例】 /etc/sysconfig/networkに NETWORKING_IPV6=yes IPV6_DEFAULTDEV=eth0 IPV6_DEFAULTGW=2001:xxx:yyy:・・・:z を追加 /etc/sysconfig/network-scriptsに NETWORKING_IPV6=yes IPV6INIT=yes IPV6_AUTOCONF=no IPV6_ROUTER=no IPV6ADDR=2001:xxxx:yyy:・・・:z/64 を追加 【課題】 ・IPv6に対応したSPサイトとの認証連携の動作確認 伊藤智博,…らは、2010年に岩手県盛岡市上田三丁目18番8号 岩手大学で開催された平成22年度化学系学協会東北大会においてスマートグリッド実現へ向けたフェデレーションアーキティクチャによる電池劣化管理データベースの構築について報告している⇒#282@学会;。 by
Shibboleth IdP用tomcatなどのバージョンアップ ・tomcatのセキュリティホール CVE-2009-2901 (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-2901) CVE-2009-2693 (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-2693) CVE-2009-2902 (http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-2902) tomcat 6.0.20 → 6.0.26へのバージョンアップ 動作OK by
Shibboleth IdP, SPのUPKI-Fed.Schemaへの対応 国立情報学研究所⇒#2083@講義;が中心になって進めている学術認証フェデレーション(UPKI-Fed)⇒#2587@講義;の日本語拡張属性への対応テストを行った。 UPKIのスキーマ情報によると、jao属性の場合、OIDが1.3.6.1.4.1.32264.1.1.4である。(参照情報:https://upki-portal.nii.ac.jp/docs/fed/technical/attribute) 〇IdPの設定 attribute-resolver.xmlに次の設定を行う。 属性の定義を追加する。 <resolver:AttributeDefinition id="jaOrganizationName" xsi:type="Simple" xmlns="urn:mace:shibboleth:2.0:resolver:ad" sourceAttributeID="jao"> <resolver:Dependency ref="staticAttributes" /> <resolver:AttributeEncoder xsi:type="SAML2String" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:oid:1.3.6.1.4.1.32264.1.1.4" friendlyName="jao" /> </resolver:AttributeDefinition> resolver:DataConnector id="staticAttributes"に <Attribute id="jao"> <Value>山形大学</Value> </Attribute> を追加した。 attribute-filter.xmlにAttributeRuleを追加する。 <AttributeRule attributeID="jaOrganizationName"> <PermitValueRule xsi:type="basic:A
Shibboleth Idp 2.1.2へのバージョンアップ 学術認証フェデレーション(UPKI-Fed)試行運用参加説明会⇒#106@会議;に参加し、海外のSPなどでは、Shibboleth 1.3も利用されているため、Shibboleth 1.3/2.0の2つの仕様に対応したShibboleth IdPを構築することが必要であることがわかった。 UPKI-学術認証フェデレーション⇒#2842@講義;の技術ガイド(https://upki-portal.nii.ac.jp/docs/fed/technical/idp/customize)によると、それほど面倒な設定はないようだったので、ひとまず、Shibboleth 2.0からShibboleth 2.1.2へのバージョンアップを行った。 また、山形大学のShibboleth Metaデータを管理しているデータベースの構造をShibboleth 1.3/2.0の2つのバージョンに対応したメタデータを格納できるようにフィールドの拡張を行った⇒#1154@ノート;。また、データベースを表示するaspページのコードも対応した。 バージョンアップしたら、なんだか、eduPersonTargetedIDの形式が変わったぞ? 以前までは、ハッシュ形式だったのに、2.1.2からはUUID形式(Type4)になっている? UPKIに参加している他の人に聞いてみよう!!(https://upki-portal.nii.ac.jp/ml-archives/upki-fed/msg00046.html) なるほど、こんなところ(https://upki-portal.nii.ac.jp/ml-archives/upki-fed/msg00047.html)にソースコードが管理さているのかぁ。ソースコード読んだほうがはやそうなので、ひとまず、読んでみました⇒#1155@ノート;。<国立情報学研究所⇒#2083@講義;の山地先生、ありがとうございます。 その後、京産大の秋山より、バグの報告がShibbolethプロジェクトのJIRAに掲載されており、shibboleth-commons 1.1.3で改善されるとのことであった(https://upki-portal.nii.ac.jp/ml-archives/upki-fed/msg00053.html)
UPKI用Shibboleth IdPの構築記録(OS環境の設定 No.1) ・Centos 5.3のインストール(http://ftp.yz.yamagata-u.ac.jp/pub/linux/centos/5.3/isos/i386/) CentOS-5.3-i386-netinstall.isoをダウンロードしてftpサーバよりOSをインストール ・ntpのインストール # yum install ntp.i386 ・時刻合わせためにcrontab の設定 */3 * * * * /sbin/clock --hctosys 10 0-23/1 * * * /usr/sbin/ntpdate (NTPサーバ)&& /sbin/clock -w ・gccのインストール # yum install gcc.i386 ・opensslのインストール(http://ftp.yz.yamagata-u.ac.jp/pub/network/security/openssl/) % tar zxf openssl-xx.xx.tar.gz % make # make install ・Berkeley DB のインストール( http://www.oracle.com/technology/software/products/berkeley-db/index.html) % tar zxf db-x.x.x.tar.gz % cd build_unix/ % ../dist/configure % make # make install または、 # yum install db4-devel.i386 ・openldapのインストール(http://ftp.yz.yamagata-u.ac.jp/pub/network/security/OpenLDAP/) % tar zxf openldap-x.x.tgz % ./configure --enable-overlays --enable-dyngroup --enable-dynlist --enable-rwm --enable-crypt --enable-ldap # make install ・apacheのインストール(http://ftp.yz.yamagata
OpenLDAPのプロキシ機能による属性の変換設定 Shibboleth IdPなどで、ADやLDAPの属性名を別の属性名に変換する方法のサンプルコードを示します。 〇Compile時の注意 ./configure --enable-overlays --enable-dyngroup --enable-dynlist --enable-rwm --enable-crypt --enable-ldap 〇設定例 slapd.confに、 overlay rwm rwm-map attribute uid sAMAccountname rwm-map attribute eduPersonPrincipalName userprincipalname rwm-map attribute mail mail rwm-map attribute jasn sn のように記入。 【関連講義】 ・サイバーキャンパス「鷹山」,UPKI関係資料⇒#2869@講義; 【関連書籍】 ・シボレスIdPの構築⇒#14@シボレスレビュー;
ADにLDAP接続するときに、リフェラルを無効にして属性情報を取得する方法 通常、ADにLDAP(ポート番号 389)で接続すると、リフェラルを有効にする必要がある。 このとき、1つの問題が生じる。リフェラルは、このとき、DomainDnsZones.xxx・・を参照するように返してくるが、この名前空間は、DNSによるラウンドロビンで、DCを選択するようになっている。 ref: ldap://DomainDnsZones.xxx.yamagata-u.ac.jp/DC=DomainDnsZones,DC=xxx,DC=yamagata-u,DC=ac,DC=jp リフェラル要求時に、故障などによって停止しているDCあり、そのDCにラウンドロビンで接続した場合、アプリケーションによっては、タイムアウトによって、認証失敗と判断して動作することがある。 この問題は、Shibbolethでも発生している。これまで、その回避策を検討していた。その解決策としては、ADのGC(グローバルカタログ)を参照することであった(気がつくのが遅かった・・・)。ちなみに、Shibboleth IdPでは、リフェラルを無効にても、問題なくADから認証・属性情報を取得ができました。 これで、Shibboleth IdPから冗長化されたDCの情報を利用して、DCが故障や停止しても、IdPサービスを安定して提供できる。 GCポート番号: 3268 【謝辞】 GCを活用すればよいことに気がつかせていただいた成城大学 五十嵐先生のMLへの問い合わせおよび国立情報学研究所の学術認証フェデレーション⇒#2842@講義;の情報交換MLサービスに感謝いたします。 【参考URL】 ML記事:https://upki-portal.nii.ac.jp/ml-archives/upki-fed/msg00151.html UPKI技術資料(成城大学提供):https://upki-portal.nii.ac.jp/docs/fed/technical/idp/customize/knowhow/ad1 Shibboleth参考ドキュメント:https://spaces.internet2.edu/display/SHIB2/IdPADConfigIssues 【関連ノート】 ・Shibbole
Shibboleth IdP 2.1.5へのバージョンアップ Shibbolethサイト(http://shibboleth.internet2.edu/downloads/shibboleth/idp/latest/)よりshibboleth-identityprovider-2.1.5-bin.zipをダウンロードする。 % unzip shibboleth-identityprovider-2.1.5-bin.zip で展開する。 #cd shibboleth-identityprovider-2.1.5-bin # ./install.sh をつかって、/opt/shibboleth-idp-2.1.5にインストール ・$TOMCAT/endorcedの旧jarファイルを削除して、shibboleth-identityprovider-2.1.5/endorsedの*.jarファイルを$TOMCAT/endorcedにコピー。 # cp *.jar /usr/java/tomcat/endorsed ・$JAVA/jre/lib/extに、shibboleth-identityprovider-2.1.5/lib/shibboleth-jce-1.1.0.jarをコピー # cp shibboleth-jce-1.1.0.jar /usr/java/default/jre/lib/ext ・インストールディレクトリに、旧設定ファイル(attribute-filter.xml attribute-resolver.xml handler.xml logging.xml login.config relying-party.xml )をコピー。 # cp attribute-filter.xml attribute-resolver.xml handler.xml logging.xml login.config relying-party.xml /opt/shibboleth-idp-2.1.5/conf ・インストールディレクトリ/war/idp.warを、$TOMCAT/webappsディレクトリに上書きコピー # cp idp.war /usr/java/tomcat/webapps ・handler.xml, logging.xml,
shibboleth IdP 2.1.3へのバージョンアップ Shibboleh IdP 2.0.0から2.1.2にバージョンアップしたときに、storedIDにバグがあるようで、問題が発生した⇒#1149@ノート;。JIRAの情報から、バージョン2.1.3では解決されている可能性が高いことから、実際に、2.1.3にバージョンアップして確かめた。 結論としては、2.1.2で発生した問題は、解決されたいた。 旧バージョン: Shibboleth IdP 2.1.2 新バージョン: Shibboleth IdP 2.1.3 簡単に作業メモを下記に示す。基本的には、UPKI学術認証フェデレーションのページで公開されている「SP1.3とIdP2.xとの接続設定」の資料(https://upki-portal.nii.ac.jp/docs/fed/technical/idp/customize)を元に、2.1.3に対応した作業を行った。 % tar zxf shibboleth-identityprovider-2.1.3-bin.tar.gz % cd shibboleth-identityprovider-2.1.3 # ./install.sh をつかって、/opt/shibboleth-idp-2.1.3にインストール ・$TOMCAT/endorcedの旧jarファイルを削除して、shibboleth-identityprovider-2.1.3/endorsedの*.jarファイルを$TOMCAT/endorcedにコピー。 # cp *.jar /usr/java/tomcat/endorsed ・$JAVA/jre/lib/extに、shibboleth-identityprovider-2.1.3/lib/shibboleth-jce-1.1.0.jarをコピー # cp shibboleth-jce-1.1.0.jar /usr/java/default/jre/lib/ext インストールディレクトリに、旧設定ファイル(attribute-filter.xml attribute-resolver.xml handler.xml logging.xml login.config relying-party.xml )をコピー。 # cp a
SAML1ScopedStringAttributeEncoderをScriptに変更するときの注意 Shibboleth IdPなどで、Hashなどを行って、scope文字列を追加しても、正常動作しないことがあります。 そのときは、まず、別のresolver:AttributeDefinition IDを作成して、その中に、Scriptを書きこみます(ID=convertxxx)。 次に、Script実行後取得したいresolver:AttributeDefinitionのsourceAttributeIDに作成したID(ID=convertxxx)を指定し、参照することを推奨します。 2段階ステップで実行すると問題なく動作します。 サンプルコード: Shibboleth IdPでBase64に変換する方法⇒#1170@ノート;
特定のShibboleth SPに属性が特定の条件を満たした時のみ属性情報を送信するIdPの設定 たとえば、https://upki-t est-sp01.nii.ac.jp/のSPに対してIdPは、 eduPersonScopedAffiliation属性にfacultyが含まれるときに、eduPersonScopedAffiliation属性を送信する設定は、下記のようになる。この条件を満たさない場合は、eduPersonScopedAffiliation属性はNULLになる。 <AttributeFilterPolicy> <PolicyRequirementRule xsi:type="basic:AttributeRequesterRegex" regex="(https://upki-t est-sp01.nii.ac.jp).*" /> <AttributeRule attributeID="transientId"> <PermitValueRule xsi:type="basic:ANY" /> </AttributeRule> <AttributeRule attributeID="eduPersonTargetedID"> <PermitValueRule xsi:type="basic:ANY" /> </AttributeRule> <AttributeRule attributeID="eduPersonScopedAffiliation"> <PermitValueRule xsi:type="basic:AttributeValueString" value="faculty" /> </AttributeRule> </AttributeFilterPolicy> by
山形大学のShibboleth IdPの現状(UPKI-SSO⇒#2587@講義;への取り組み) 1.既存の認証基盤であるADを利用したShibboleth IdPシステムを構築。 ADを利用するときは、リフェラルの設定が必要な可能性が高い⇒#1086@ノート;。 2.複数認証基盤(AD)を統合して、IdPに認証基盤として利用可能なシステム。 3.ユーザ名のフォーマットは、eduroamフォーマットを採用⇒#2627@講義;。(eduroamとの混乱を避けるため) 4.eduroamフォーマットのユーザ名を使用したとき、ユーザ名の@以下を「UPKI Plone1」において判別しない問題が発生。現在、SPの構築を行いながら、検証中。 これらの内容については、2009年に一橋記念講堂で開催されたUPKIシンポジウム2009において既存の複数認証基盤を統合したUPKI用統合認証基盤の構築について報告している⇒#242@学会;。 【関連講義】サイバーキャンパス「鷹山」,UPKI関係資料⇒#2869@講義; by
【エラー解説】Shibboleth IdP 2.1.3 エラー: tomcat/log/catalina.log OpenSAML requires an xml parser that supports JAXP 1.3 and DOM3. The JVM is currently configured to use the Sun XML parser, which is known to be buggy and can not be used with OpenSAML. Please endorse a functional JAXP library(ies) such as Xerces and Xalan. For instructions on how to endorse a new parser see http://java.sun.com/j2se/1.5.0/docs/guide/standards/index.html 確認: tomcatの設定で、java.endorsed.dirsはきちんと設定されていますか? java.endorsed.dirsには、shibbolethに必要な、*.jarファイルはコピーしましたか? #CATALINA_OPTS="-Djava.library.path=/home/jfclere/jakarta-tomcat-connectors/jni/native/.libs" CATALINA_OPTS="-Djava.endorsed.dirs=$CATALINA_HOME/endorsed"
Shibboleth IdPでBase64に変換する方法 Shibboleth IdPで属性情報をSPに送信するときに、Base64に変換する方法をためしました。サンプルコンフィグを下記に示します⇒#1172@ノート;。 <resolver:AttributeDefinition id="eduPersonPrincipalNameBase64" xsi:type="Script" xmlns="urn:mace:shibboleth:2.0:resolver:ad" sourceAttributeID="eduPersonPrincipalName"> <resolver:Dependency ref="xxxx" /> <Script> <![CDATA[ importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider); importPackage(Packages.com.sun.org.apache.xerces.internal.impl.dv.util); eduPrincipal2=eduPersonPrincipalName.getValues().get(0); eduPersonPrincipalNameBase64=new BasicAttribute("eduPersonPrincipalNameBase64"); eduPersonPrincipalNameBase64.getValues().add(Base64.encode(eduPrincipal2.getBytes())); ]]> </Script> </resolver:AttributeDefinition> <resolver:AttributeDefinition id="principalName" xsi:type="Scoped" xmlns="urn:mace:sh
【エラー解説】Shibboleth IdP 2.1.3 Shibboleth IdPのログがないときは、tomcatのログを見ましょう! エラー: tomcat/log/catalina.log org.apache.catalina.core.StandardContext listenerStart 致命的: クラス org.springframework.web.context.ContextLoaderListener のリスナインスタンスにコンテキスト初期化イベントを送信中の例外です 確認: $JAVA_HOME/jre/lib/security/java.security に security.provider.?=edu.internet2.middleware.shibboleth.DelegateToApplicationProvider などの設定はありますか? by
UPKI用Shibboleth IdPの構築記録(OS環境の設定 No.3) % unzip shibboleth-identityprovider-2.1.3-bin.zip # install.sh /opt/shibboleth-idp-2.1.3にインストール by
UPKI用Shibboleth IdPの構築記録(OS環境の設定 No.2) 〇UPKI用Shibboleth IdPの構築記録(OS環境の設定 No.1)⇒#1138@ノート;からの続き apache tomcatのインストール(UPKI用Shibboleth IdPの構築記録(OS環境の設定 No.2)⇒#1140@ノート;) # cd /usr/java # tar zxvf (ソースディレクトリ)/apache-tomcat-6.0.xx.tar.gz # ln -s apache-tomcat-6.0.xx /usr/java/tomcat jsvcを自動起動に設定しておくと便利。 # cd /usr/java/tomcat/bin # tar zxvf jsvc.tar.gz # cd jsvc-src/ # sh ./configure --with-java=/usr/java/default # make # cp jsvc .. # cp native/Tomcat5.sh /etc/rc.d/init.d/tomcat # vi /etc/rc.d/init.d/tomcat 下記の3行を先頭のコメントに追加 # chkconfig: - 85 15 # description: Tomcat # processname: tomcat 下記の5行を修正 JAVA_HOME=/usr/java/default CATALINA_HOME=/usr/java/tomcat DAEMON_HOME=$CATALINA_HOME TOMCAT_USER=tomcat CATALINA_BASE=$CATALINA_HOME エディターを終了し、保存 tomcatユーザーを追加 # /usr/sbin/adduser tomcat # chown -R tomcat: /usr/java/tomcat/ # chkconfig --add tomcat # chkconfig --level 345 tomcat on # vi /etc/profile /etc/profileに下記を追加 JAVA_HOME=/usr/java/default MANPAITH=$MANPATH:$JAVA_
差分-Shibboleth IdP (2.0.0 - 2.1.2; StoredIDDataConnector) 国立情報学研究所⇒#2083@講義;の山地先生にShibbolethのソースコードの管理ページを教えていただき、Shibboleth IdP 2.0.0 を2.1.2にバージョンアップした⇒#1149@ノート;ときに、StoredIDのフォーマット(生成方法も含む)が変わった原因を調査してみた。Javaは詳しくないので、間違っているかもしれませんが、参考程度にメモっておきます。 edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.dataConnector.StoredIDDataConnector.PersistentIdEntry メソッドが変更なっていました。 do { log.debug("Generated persistent ID was already assigned to another user, regenerating"); persistentId = UUID.randomUUID().toString(); } while (pidStore.getPersistentIdEntry(persistentId, false) != null); が追加されているなぁ。 Shibboleth IdPのログにも、 DEBUG [edu.internet2.middleware.shibboleth.common.attribute.resolver.provid er.dataConnector.StoredIDDataConnector:258] - Generated persistent ID was already assigned to another user, regenerating のが残っているな、DB空にしたのになぁ??? もしかして、JavaでDo { } while (式) 文を使うときは、最初の1ループは実行するという構文じゃないのかなぁ? そうだとしたら、この行は常に実行されるから、正常動作ってことかなぁ? 原因は
大学教育の質の保証・向上ならびに 電子化及びオープンアクセスの推進の観点から 学校教育法第百十三条に基づき、 教育研究活動の状況を公表しています。
第百十三条 大学は、教育研究の成果の普及及び活用の促進に資するため、その教育研究活動の状況を公表するものとする。