2

SP によって開始された Web ブラウザー SAML SSO プロファイルを JBOSS に実装しようとしています。

私のアプリケーションは SP です。

サーバー用の証明書を作成し、それをメタデータ ファイルで IDP に送信する必要があることを理解しました。

Microsoft Active Directory 証明書サービスを使用して証明書をインストールしました。

ここで、IDP から SAML 応答を取得すると、暗号化されます。

<saml:EncryptedAssertion> ...
    <ds:X509Certificate> ... 
        <xenc:CipherData> ... 
            <xenc:CipherValue> .. SOME ENCRYPTED VALUE ... </xenc:CipherValue>

さて、復号化された値を取得するには、次のようなものが必要であることを理解しています。

File keyStoreFile = new File(MY_KEY_STORE_FILE);
KeyStore keyStore = KeyStore.getInstance("JKS");
keyStore.load(new FileInputStream(keyStoreFile),MY_PASSWORD));

問題は、キー ストア ファイルとは何かということです。入手方法とフォーマットは?
次のフォルダを見つけました。

C:\Users\MyUser\AppData\Roaming\Microsoft\SystemCertificates\My\Keys
拡張子のないシステム ファイルが含まれています。これは秘密鍵ですか?コードでどのように使用しますか?

4

1 に答える 1

1

AD から証明書をエクスポートした方法によって異なります。systemCertificates ディレクトリで見つけたファイルは、エクスポートしたものですか? 秘密鍵を使用して証明書をエクスポートする方法は次のとおりです。

KeyStore.getInstance("PKCS12")これにより、またはを使用して Java にロードできる PKCS 12 または PKCS 8 (DER) 証明書が作成されますKeyStore.getInstance("RSA")。キーストアをロードしたら、XML 暗号化のために、次のKeyInfoように作成されたオブジェクトが必要になります。

PrivateKeyEntry entry = ((PrivateKeyEntry) keyStore.getEntry(certAlias, new KeyStore.PasswordProtection(password)));

KeyInfoFactory keyFactory = KeyInfoFactory.getInstance();

KeyInfo keyInfo = keyFactory.newKeyInfo(Collections.singletonList(keyFactory.newX509Data(Collections.singletonList(entry.getCertificate()))));
于 2012-11-23T13:19:33.970 に答える