...
パネル | ||
---|---|---|
| ||
← StartTLSを有効にします ← CA証明書を設定します |
特定のSPへのアサーションを暗号化しない設定
学認では技術運用基準として、アサーション(IdPで生成した利用者の属性等の情報)をSPに送る際には暗号化すべき(SHOULD)であると定めています(*1)が、Google AppsやOffice 365などのように暗号化したアサーションを受け付けないSPも存在します。Shibboleth IdPのデフォルトの挙動は、全てのSPに対して送信するアサーションを暗号化するようになっていますので、そのような特定のSPに対して送信するアサーションを暗号化しないように設定する方法を以下に記載します。
...
コード ブロック | ||||
---|---|---|---|---|
| ||||
<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> |
...
- 参考情報
- 情報元: https://www.gakunin.jp/ml-archives/upki-fed/msg00615.html
- 特定のSPへのアサーションを暗号化しないことに関するポリシーの議論:
http://marc.info/?t=136497370800001&r=1&w=2
...
idやvalueはSP毎に変わりますので、下表を参考に各SPに合わせて設定してください。
要素名 | 属性名 | 説明 |
---|---|---|
AttributeFilterPoicy | id | ポリシー名として一意な値を設定してください。例えば、学認Webサイト IdP・SP一覧の管理者向けマニュアルでは"Policyfor<SP名>"としています。 |
| value | 属性送出先のentityIDを設定します。 |
注意 |
---|
IdPにてNameIDを暗号化する設定にしている場合、上記設定だけではうまく連携できない可能性があります。その場合は、特定のSPへのアサーションを暗号化しない設定を参考に、encryptAssertionsは<DefaultRelyingParty>の設定を引き継ぎ、encryptNameIdsだけを"never"に変更してください。 |
...
idやvalueはSP毎に変わりますので、下表を参考に各SPに合わせて設定してください。
要素名 | 属性名 | 説明 |
---|---|---|
AttributeFilterPoicy | id | ポリシー名として一意な値を設定してください。例えば、学認Webサイト IdP・SP一覧の管理者向けマニュアルでは"Policyfor<SP名>"としています。 |
| value | 属性送出先のentityIDを設定します。 |
注意 |
---|
IdPにてNameIDを暗号化する設定にしている場合、上記設定だけではうまく連携できない可能性があります。その場合は、特定のSPへのアサーションを暗号化しない設定を参考に、encryptAssertionsは<DefaultRelyingParty>の設定を引き継ぎ、encryptNameIdsだけを"never"に変更してください。 |
...
discoveryTemplate.html を /etc/shibboleth に配置します。文言を適当に修正してください。
注意 特に"meatwiki"の部分はご自身のサービス名に修正してください。(2か所)
- Javascriptテンプレートのダウンロード からJavaScript部分だけを抜き出したファイルをドキュメントルート配下(例えば/var/www/html)に js/embedded-wayf_config.js として配置します。
- 環境に合わせて wayf_URL, wayf_sp_entityID, wayf_sp_handlerURL, wayf_return_url を修正してください。
DSのリストに追加したいIdPを wayf_additional_idps に設定してください。例:
コード ブロック language javascript var wayf_additional_idps = [ {name:"AdditionalIdP", entityID:"https://idp.example.ac.jp/idp/shibboleth", SAML1SSOurl:"https://idp.example.ac.jp/idp/profile/Shibboleth/SSO"}, ];
- /etc/shibboleth/shibboleth2.xml の設定を変更します。
前出の 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>
JavaScript無効時のために
/Shibboleth.sso/Login
でCentral DSへ遷移するように設定します。(entityID
の削除とdiscoveryURL
の修正)書式設定済み <SSO discoveryProtocol="SAMLDS" discoveryURL="https://ds.gakunin.nii.ac.jp/WAYF">
embedded-wayf_config.jsのwayf_additional_idpsに追加したIdPのメタデータを読み込むための設定を追加します。事前にIdPのエンティティメタデータを取得して、/etc/shibboleth/metadata/ に配置しておいてください。
書式設定済み <MetadataProvider type="XML" filepath="metadata/example_idp-metadata.xml"/>
...
情報 | ||
---|---|---|
|
...
/Shibboleth.sso/の扱い
Shibboleth SPをインストールしたサイト(virtual hostで複数のサイトを持っている場合は少なくともそのうちの1つ)では、/Shibboleth.sso/以下をmod_shibモジュールがハンドリングする必要があります。例えば、IdPから送信されたアサーションはこのパス内にあるURL(具体的には /Shibboleth.sso/SAML2/POST
等)で受けます。
...
パネル |
---|
→ Includeの行を増やすことで、連携するIdPを増やすことができます |
...
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-Provider | HTTP_SHIBIDENTITYPROVIDER | - |
eppn | eppn | HTTP_EPPN | eduPersonPrincipalName |
persistent-id | persistent-id | HTTP_PERSISTENTID | eduPersonTargetedID |
o | o | HTTP_O | organizationName |
jao | jao | HTTP_JAO | jaOrganizationName |
ou | ou | HTTP_OU | organizationalUnitName |
jaou | jaou | HTTP_JAOU | jaOrganizationalUnitName |
unscoped-affiliation | unscoped-affiliation | HTTP_UNSCOPEDAFFILIATION | eduPersonAffiliation |
affiliation | affiliation | HTTP_AFFILIATION | eduPersonScopedAffiliation |
entitlement | entitlement | HTTP_ENTITLEMENT | eduPersonEntitlement |
HTTP_MAIL | |||
givenName | givenName | HTTP_GIVENNAME | givenName |
jaGivenName | jaGivenName | HTTP_JAGIVENNAME | jaGivenName |
sn | sn | HTTP_SN | surname |
jasn | jasn | HTTP_JASN | jaSurname |
displayName | displayName | HTTP_DISPLAYNAME | displayName |
jaDisplayName | jaDisplayName | HTTP_JADISPLAYNAME | jaDisplayName |
情報 |
---|
参考 : https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPAttributeAccess 上記ページの末尾に、PHP以外のプログラミング言語で属性値を取得する構文の記載がありますので参考にしてください。(Java, Cold Fusion, ASP, ASP.NET) Rubyについては下記ページのリンク先を参考にしてください。 |
...