山地先生 山形大学の伊藤です。 ご返事、ありがとうございます。 こんなところにコードがあったのですね。 なんとなーく、問題点がわかってきました。間違っているかも しれませんので、詳しい方フォローしていただけると幸いです。 Javaは、勉強不足なものですから、間違っている可能性があります。 edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.dataC onnector.StoredIDDataConnector.PersistentIdEntry のメソッドが変更されたようです。 Version 1.1.2には、新たに、 do { log.debug("Generated persistent ID was already assigned to another user, regenerating"); persistentId = UUID.randomUUID().toString(); } while (pidStore.getPersistentIdEntry(persistentId, false) != null); が追加されたようです。 開発者の意図としては、既に同じ、persistent IDがデータベースにあるときには、 新しいUUIDをランダムに生成するようにコーディングをしたのではないでしょうか? ここからは、Javaのことが詳しくないので推測ですが、 JavaでDo { } while (式) 分を使うときは、 最初の1ループは実行するという構文ではないでしょうか? ただ、この動作がShibboleth IdP 2.1.2の仕様で、全て、UUID.randowmUUIDを使用す るということで あれば、正常動作と判断します。LocalEntityId、PeerEntityId、LocalId, saltが同 一条件下で 生成してみると同じIDが生成されないようで、ちょっと、気になっていました。 以上。よろしくお願いします。 〇Version 1.0.0 protected PersistentIdEntry createPersistentId(ShibbolethResolutionContext resolutionContext, String localId, byte[] salt) throws SQLException { PersistentIdEntry entry = pidStore.new PersistentIdEntry(); entry.setLocalEntityId(resolutionContext.getAttributeRequestContext().getLoc alEntityId()); entry.setPeerEntityId(resolutionContext.getAttributeRequestContext().getInbo undMessageIssuer()); entry.setPrincipalName(resolutionContext.getAttributeRequestContext().getPri ncipalName()); entry.setLocalId(localId); String persisentId; int numberOfExistingEntries = pidStore.getNumberOfPersistentIdEntries(entry.getLocalEntityId(), entry .getPeerEntityId(), entry.getLocalId()); if (numberOfExistingEntries == 0) { try { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(entry.getPeerEntityId().getBytes()); md.update((byte) '!'); md.update(localId.getBytes()); md.update((byte) '!'); persisentId = Base64.encodeBytes(md.digest(salt)); } catch (NoSuchAlgorithmException e) { log.error("JVM error, SHA-1 is not supported, unable to compute ID"); throw new SQLException("SHA-1 is not supported, unable to compute ID"); } } else { persisentId = UUID.randomUUID().toString(); } entry.setPersistentId(persisentId); entry.setCreationTime(new Timestamp(System.currentTimeMillis())); return entry; } 〇Version 1.1.2 protected PersistentIdEntry createPersistentId(ShibbolethResolutionContext resolutionContext, String localId, byte[] salt) throws SQLException { PersistentIdEntry entry = pidStore.new PersistentIdEntry(); entry.setLocalEntityId(resolutionContext.getAttributeRequestContext().getLoc alEntityId()); entry.setPeerEntityId(resolutionContext.getAttributeRequestContext().getInbo undMessageIssuer()); entry.setPrincipalName(resolutionContext.getAttributeRequestContext().getPri ncipalName()); entry.setLocalId(localId); String persistentId; int numberOfExistingEntries = pidStore.getNumberOfPersistentIdEntries(entry.getLocalEntityId(), entry .getPeerEntityId(), entry.getLocalId()); if (numberOfExistingEntries == 0) { try { MessageDigest md = MessageDigest.getInstance("SHA"); md.update(entry.getPeerEntityId().getBytes()); md.update((byte) '!'); md.update(localId.getBytes()); md.update((byte) '!'); persistentId = Base64.encodeBytes(md.digest(salt)); } catch (NoSuchAlgorithmException e) { log.error("JVM error, SHA-1 is not supported, unable to compute ID"); throw new SQLException("SHA-1 is not supported, unable to compute ID"); } } else { persistentId = UUID.randomUUID().toString(); } do { log.debug("Generated persistent ID was already assigned to another user, regenerating"); persistentId = UUID.randomUUID().toString(); } while (pidStore.getPersistentIdEntry(persistentId, false) != null); entry.setPersistentId(persistentId); entry.setCreationTime(new Timestamp(System.currentTimeMillis())); return entry; } > -----Original Message----- > From: xxxxxxxxxxxxxx@xxxxxxxxx [mailto:xxxxxxxxxxxxxx@xxxxxxxxx] On > Behalf Of xxxxxx@xxxxxxxxx > Sent: Thursday, August 20, 2009 12:16 AM > To: xxxxxxxx@xxxxxxxxx > Subject: [upki-fed:51] Re: [upki-fed:50] 【質問】Shibboleth IdP 2.1.2 > にしたらeduPersonTargetedIDのフォーマットが変わりますか? > > ** On Wed, 19 Aug 2009 19:44:09 +0900 > ** Tomohiro Ito <xxxxxxxx@xxxxxxxxxxxxxxxxxxx> writes: > > > Shibboleth IdP 2.1.2にしたら、eduPersonTargetedIDのフォーマットが、 > > > > 0b000ab7-2fa7-4ebf-b387-fdd63dc15cf6 > > StoreするIDのフォーマット自体が違ったということですか? > ということであれば, > > http://svn.middleware.georgetown.edu/view/java-shib-common/tags/1.0.0/ > src/edu/internet2/middleware/shibboleth/common/attribute/resolver/prov > ider/dataConnector/StoredIDStore.java?view=log > と > http://svn.middleware.georgetown.edu/view/java-shib-common/tags/1.1.2/ > src/main/java/edu/internet2/middleware/shibboleth/common/attribute/res > olver/provider/dataConnector/StoredIDStore.java?view=log > > あたりを比較したら違いがありますか? > -- > Kazu
Attachment:
smime.p7s
Description: S/MIME cryptographic signature