ユーザアクセスのロギング
IdPの運用において、インシデント発生時の対応のためには、ユーザ認証の記録をログファイルに出力しておくことが必要となります。特に、SPに対してeduPersonPrincipalNameのような個人識別可能な属性を渡さない場合は、セッションの識別子やeduPersonTargetedIDなどが手がかりとなります。
IdPにおいてログに記録するための一つの方法としては、attribute-resolver.xmlに以下のような定義を追加(<AttributeResolver></AttributeResolver>の内側)する方法があります(Shibboleth IdP 3.2.1.5以降で動作確認1以降で動作確認)。
● eduPersonTargetedIDの定義でComputedIDを用いている場合
パネル |
---|
borderColor | #cccccc |
---|
bgColor | #eeeeee |
---|
title | Java 1.7/Rhino の場合 |
---|
borderStyle | solid |
---|
|
<resolver:AttributeDefinition id="eduPersonTargetedIDLogging" xsi:type="Script" xmlns="urn:mace:shibboleth:2.0:resolver:ad">
<!-- Dependency that provides the source attribute. -->
<resolver:Dependency ref="computedID" />
<resolver:Dependency ref="eduPersonPrincipalName" />
<Script><![CDATA[
importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);
importPackage(Packages.org.slf4j);
logger = LoggerFactory.getLogger("edunet.internet2.middleware.shibboleth.resolveridp.Script.scriptTestattribute");
eduPersonTargetedIDLogging = new BasicAttribute("eduPersonTargetedIDLogging");
if ( requestContextresolutionContext.inboundMessageIssuerattributeRecipientID.equals("https://shiken-sp00.nii.ac.jp/shibboleth-sp") ) { logger.info( "eduPersonPrincipalName : " + eduPersonPrincipalName.getValues().get(0).getValue() + '@' + eduPersonPrincipalName.getValues().get(0).getScope() + " , eduPersonTargetedID : " + computedID.getValues().get(0) ); } ]]></Script> </resolver:AttributeDefinition> |
パネル |
---|
borderColor | #cccccc |
---|
bgColor | #eeeeee |
---|
title | Java 1.8/Nashorn の場合 |
---|
borderStyle | solid |
---|
|
<resolver:AttributeDefinition id="eduPersonTargetedIDLogging" xsi:type="Script" xmlns="urn:mace:shibboleth:2.0:resolver:ad">
<!-- Dependency that provides the source attribute. --> <resolver:Dependency ref="computedID" /> <resolver:Dependency ref="eduPersonPrincipalName" />
<Script><![CDATA[ logger
logger.info(
= Java.type("org.slf4j.LoggerFactory").getLogger("net.shibboleth.idp.attribute");
if ( resolutionContext.attributeRecipientID.equals("https://shiken-sp00.nii.ac.jp/shibboleth-sp") ) { logger.info( "eduPersonPrincipalName : " + eduPersonPrincipalName.getValues().get(0).getValue()
+ '@' + eduPersonPrincipalName.getValues().get(0).getScope()
+ " , eduPersonTargetedID : " + computedID.getValues().get(0)
);
}
} ]]></Script>
</resolver:AttributeDefinition> |
...
パネル |
---|
borderColor | #cccccc |
---|
bgColor | #eeeeee |
---|
borderStyle | solid |
---|
|
16:00:39.9132016-08-31 13:57:02,281 - INFO [edu.internet2.middlewarenet.shibboleth.resolveridp.Script.scriptTestattribute:-2] [TP-Processor5] - eduPersonPrincipalName : test001@nii.ac.jp , eduPersonTargetedID : 9FbbgVJOm93VyaW5r0MplcubHGgLkDwL3dNSb9FBr3TNP0g3D9F7mk= |
● eduPersonTargetedIDの定義でStoredIDを用いている場合
...