警告 |
---|
Shibboleth IdP 4.1以降では本体にTOTPプラグインがモジュールとして提供されておりますので、そちらの使用をお勧めします。本ページは41以降では本体にTOTPプラグインがモジュールとして提供されておりますので、そちらの使用をお勧めします。本ページは本来4.0.xにて動作検証を行ったものです。x向けのものであり、4.1にて動作するように設定手順を修正したものです。 |
1. はじめに
Shibboleth IdPでの認証において、Google Authenticatorなど、TOTPに対応したデバイス/アプリのワンタイムパスワードを追加で必要とするように変更します。
...
conf/, edit-webapp/, flows/, views/ の内容をディレクトリ構造を保持したまま/opt/shibboleth-idp/以下に配置。
idpconf/authn/authn.propertiesのidp.authn.flowsに "| Totp "を追加。を指定。
コード ブロック | ||
---|---|---|
| ||
-idp.authn.flows = Password
+idp.authn.flows = Password|Totp |
conf/authn/general-authn.xmlの <util:list id="shibboleth.AvailableAuthenticationFlows">
の子要素として以下を挿入します。TOTPの優先順位を高くするためには先頭に挿入してください。global.xmlの末尾(</beans>の上)に以下を挿入します。
コード ブロック | ||
---|---|---|
| ||
<bean id="authn/Totp" parent="shibboleth.AuthenticationFlow" p:passiveAuthenticationSupported="true" p:forcedAuthenticationSupported="true"> <property name="supportedPrincipals"> <util:list> <bean parent="shibboleth.SAML2AuthnContextClassRef" c:classRef="urn:oasis:names:tc:SAML:2.0:ac:classes:TimeSyncToken" /> </util:list> </property> </bean> |
conf/authn/password-authn-config.xmlにパスワードを持ち回る必要があるため以下の行を追加します。propertiesにパスワードを持ち回る必要があるため以下の行を修正します。
コード ブロック |
---|
@@ -2342,67 +2342,87 @@ # Override this and removeAfterValidation to require all validators to <bean id="shibbolethsucceed #idp.authn.Password.PasswordFieldName"requireAll class="java.lang.String" c:_0="j_password" /> <bean id="shibboleth false # Override to keep the password around -#idp.authn.Password.SSOBypassFieldName"removeAfterValidation class="java.lang.String" c:_0="donotcache" /> + <util:constant id="shibboleth true +idp.authn.Password.RemoveAfterValidation"removeAfterValidation static-field="java.lang.Boolean.FALSE"/> + <!-- Simple transforms= false # Override to applystore topassword usernamein before validation. --> <util:constant id="shibbolethJava Subject #idp.authn.Password.Lowercase"retainAsPrivateCredential static-field="java.lang.Boolean.FALSE"/>= false # Simple username transforms <util:constant id="shibboleth.authn.Password.Uppercase" static-field="java.lang.Boolean.FALSE"/>before validation |
/opt/shibboleth-idp/bin/build.shを実行し、WARファイル再作成およびデプロイします。
最後にJettyの再起動を行います。
...