比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

...

パネル
title/opt/shibboleth-idp/conf/attribute-resolver.xml の設定

   <resolver:DataConnector id="myLDAP" xsi:type="dc:LDAPDirectory"
       ldapURL="ldap://ldaptest1.gakunin.nii.ac.jp"
       baseDN="dc=nii,dc=ac,dc=jp"
       principal="cn=Directory Manager,dc=nii,dc=ac,dc=jp"
       principalCredential="**************"
       useStartTLS="true">

                ← StartTLSを有効にします
       <dc:FilterTemplate>
           <![CDATA[
               (uid=$requestContext.principalName)
           ]]>
       </dc:FilterTemplate>
       <dc:StartTLSTrustCredential xsi:type="security:X509Filesystem" xmlns:security="urn:mace:shibboleth:2.0:security" id="MyCredential">
           <security:Certificate>/etc/pki/tls/certs/gakuninca.pem</security:Certificate>
       </dc:StartTLSTrustCredential>

                  ← CA証明書を設定します
   </resolver:DataConnector>

 

 



特定のSPへのアサーションを暗号化しない設定

学認では技術運用基準として、アサーション(IdPで生成した利用者の属性等の情報)をSPに送る際には暗号化すべき(SHOULD)であると定めています(*1)が、Google AppsやOffice 365などのように暗号化したアサーションを受け付けないSPも存在します。Shibboleth IdPのデフォルトの挙動は、全てのSPに対して送信するアサーションを暗号化するようになっていますので、そのような特定のSPに対して送信するアサーションを暗号化しないように設定する方法を以下に記載します。

...

コード ブロック
xml
xml
<RelyingParty id="SPのentityID"
    provider="IdPのentityID"
    defaultSigningCredentialRef="IdPCredential">
    ...
    <ProfileConfiguration xsi:type="saml:SAML2SSOProfile"
        includeAttributeStatement="true"
        assertionLifetime="300000"
        assertionProxyCount="0"
        signResponses="conditional"
        signAssertions="never"
        encryptAssertions="never"
        encryptNameIds="never" />
    ...
</RelyingParty>

...


...

idやvalueはSP毎に変わりますので、下表を参考に各SPに合わせて設定してください。

要素名属性名説明
AttributeFilterPoicyid

ポリシー名として一意な値を設定してください。例えば、学認Webサイト IdP・SP一覧の管理者向けマニュアルでは"Policyfor<SP名>"としています。

PolicyRequirementRule

value

属性送出先のentityIDを設定します。

注意

IdPにてNameIDを暗号化する設定にしている場合、上記設定だけではうまく連携できない可能性があります。その場合は、特定のSPへのアサーションを暗号化しない設定を参考に、encryptAssertionsは<DefaultRelyingParty>の設定を引き継ぎ、encryptNameIdsだけを"never"に変更してください。

...

idやvalueはSP毎に変わりますので、下表を参考に各SPに合わせて設定してください。

要素名属性名説明
AttributeFilterPoicyid

ポリシー名として一意な値を設定してください。例えば、学認Webサイト IdP・SP一覧の管理者向けマニュアルでは"Policyfor<SP名>"としています。

PolicyRequirementRule

value

属性送出先のentityIDを設定します。

注意

IdPにてNameIDを暗号化する設定にしている場合、上記設定だけではうまく連携できない可能性があります。その場合は、特定のSPへのアサーションを暗号化しない設定を参考に、encryptAssertionsは<DefaultRelyingParty>の設定を引き継ぎ、encryptNameIdsだけを"never"に変更してください。

...

  1. discoveryTemplate.html を /etc/shibboleth に配置します。文言を適当に修正してください。

    注意

    特に"meatwiki"の部分はご自身のサービス名に修正してください。(2か所)

  2. Javascriptテンプレートのダウンロード からJavaScript部分だけを抜き出したファイルをドキュメントルート配下(例えば/var/www/html)に js/embedded-wayf_config.js として配置します。
    1. 環境に合わせて wayf_URL, wayf_sp_entityID, wayf_sp_handlerURL, wayf_return_url を修正してください。
    2. DSのリストに追加したいIdPを wayf_additional_idps に設定してください。例:

      コード ブロック
      languagejavascript
      var wayf_additional_idps = [
            {name:"AdditionalIdP",
            entityID:"https://idp.example.ac.jp/idp/shibboleth",
            SAML1SSOurl:"https://idp.example.ac.jp/idp/profile/Shibboleth/SSO"},
      ];
  3. /etc/shibboleth/shibboleth2.xml の設定を変更します。
    1. 前出の discoveryTemplate.html を使うようにSessionInitiatorを修正します。

      書式設定済み
                   <SessionInitiator type="Chaining" Location="/DS" isDefault="true" id="DS">
                       <SessionInitiator type="SAML2" template="bindingTemplate.html"/>
                       <SessionInitiator type="Shib1"/>
      -                <SessionInitiator type="SAMLDS" URL="https://ds.gakunin.nii.ac.jp/WAYF"/>
      +               <SessionInitiator type="Form" template="discoveryTemplate.html"/>
                   </SessionInitiator>
    2. JavaScript無効時のために/Shibboleth.sso/LoginでCentral DSへ遷移するように設定します。(entityIDの削除とdiscoveryURLの修正)

      書式設定済み
                  <SSO 
                       discoveryProtocol="SAMLDS" discoveryURL="https://ds.gakunin.nii.ac.jp/WAYF">
    3. embedded-wayf_config.jsのwayf_additional_idpsに追加したIdPのメタデータを読み込むための設定を追加します。事前にIdPのエンティティメタデータを取得して、/etc/shibboleth/metadata/ に配置しておいてください。

      書式設定済み
      <MetadataProvider type="XML" filepath="metadata/example_idp-metadata.xml"/>

...

情報

checkAddress/consistentAddress について、以下のApache設定でオリジナルのソースIPアドレスを参照できる可能性があります。くれぐれも慎重に挙動の確認を行い、またブラウザからの X-Forwarded-For ヘッダがSPに到達しないこと(なりすましできないこと)をご確認の上ご使用ください。

コード ブロック
ShibRequestSetting REMOTE_ADDR X-Forwarded-For

...


/Shibboleth.sso/の扱い

Shibboleth SPをインストールしたサイト(virtual hostで複数のサイトを持っている場合は少なくともそのうちの1つ)では、/Shibboleth.sso/以下をmod_shibモジュールがハンドリングする必要があります。例えば、IdPから送信されたアサーションはこのパス内にあるURL(具体的には /Shibboleth.sso/SAML2/POST 等)で受けます。

...

パネル

       <MetadataProvider type="XML" uri="https://metadata.gakunin.nii.ac.jp/gakunin-metadata.xml"
             backingFilePath="federation-metadata.xml" reloadInterval="7200">
           <MetadataFilter type="RequireValidUntil" maxValidityInterval="1296000"/>
           <MetadataFilter type="Signature" certificate="/etc/shibboleth/cert/gakunin-signer-2010.cer"/>

           <MetadataFilter type="Whitelist">
               <Include>(...IdPのentityID...)</Include>

                          →  Includeの行を増やすことで、連携するIdPを増やすことができます
           </MetadataFilter>
       </MetadataProvider>

...


SPの証明書更新の方法

技術ガイド(GakuNinShibInstall > Home > 技術ガイド > SP > SPセッティング > SP Key Rollover)に手順が記載されています。メタデータ記載の証明書更新手順(SP) を参照してください。

...

学認で提供している attribute-map.xml (参照 : テンプレート) を用いて、Apacheで取得できる環境変数名とIIS上PHPで取得できる変数名の対応表を以下に示します(2013年12月当時の情報であるため利用するIISのバージョンやASP.NET, PHPのバージョンで異なることがあります)。

attribute-map.xmlの
<Attribute>要素のidの値
Apacheの場合
(左記idと同一)
IIS上PHPの場合参考: 学認が定義する属性名
-Shib-Identity-ProviderHTTP_SHIBIDENTITYPROVIDER-
eppneppnHTTP_EPPNeduPersonPrincipalName
persistent-idpersistent-idHTTP_PERSISTENTIDeduPersonTargetedID
ooHTTP_OorganizationName
jaojaoHTTP_JAOjaOrganizationName
ououHTTP_OUorganizationalUnitName
jaoujaouHTTP_JAOUjaOrganizationalUnitName
unscoped-affiliationunscoped-affiliationHTTP_UNSCOPEDAFFILIATIONeduPersonAffiliation
affiliationaffiliationHTTP_AFFILIATIONeduPersonScopedAffiliation
entitlemententitlementHTTP_ENTITLEMENTeduPersonEntitlement
mailmailHTTP_MAILmail
givenNamegivenNameHTTP_GIVENNAMEgivenName
jaGivenNamejaGivenNameHTTP_JAGIVENNAMEjaGivenName
snsnHTTP_SNsurname
jasnjasnHTTP_JASNjaSurname
displayNamedisplayNameHTTP_DISPLAYNAMEdisplayName
jaDisplayNamejaDisplayNameHTTP_JADISPLAYNAMEjaDisplayName
情報

参考 : https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPAttributeAccess

上記ページの末尾に、PHP以外のプログラミング言語で属性値を取得する構文の記載がありますので参考にしてください。(Java, Cold Fusion, ASP, ASP.NET)

Rubyについては下記ページのリンク先を参考にしてください。
GakuNinShibInstall:Webアプリケーションのシボレス化

...