1

VB.NETサーバーアプリケーションからGoogleAnalyticsAPIにアクセスしようとしています。私のアプリは「サービスアカウント」アプリケーションのカテゴリに分類されるため、ユーザーに資格情報を要求していません。アプリには独自の資格情報があり、Googleからデータを取得してユーザーに表示するために使用されます。

サービスアカウントのOAuth2ワークフローでは、アプリケーションがそれ自体を認証する手段としてJWT(JSON Webトークン)を生成する必要があります。これらのトークンを生成するための.NETライブラリを見つけましたが、このライブラリにどの「キー」を与えるかについて少し混乱しています。ライブラリのドキュメントで示されているキーの例は、base-64に見える数字の文字列と大文字と小文字です。しかし、私が持っているのは.p12秘密鍵ファイルとそれに対応するパスワードです。このキーファイルからある種のテキストキーを抽出するにはどうすればよいですか?

私は次のようなことをしようとしました

Dim cert As New X509Certificate2("C:\Users\xxxxx\private.p12", "notasecret")
Dim certData As Byte() = cert.Export(X509ContentType.Pkcs12, "notasecret")

しかし、これでは文字列ではなくバイト配列が残ります。私はここで正しい方向に進んでいますか?

4

1 に答える 1

3

私は何をすべきかを理解したと信じています:

Dim PrivateKeyPath As String = "C:\Users\xxxxx\privatekey.p12"
Dim CertificatePassword As String = "notasecret"

Dim cert As New X509Certificate2(PrivateKeyPath, CertificatePassword,
                                 X509KeyStorageFlags.Exportable)
Dim certData As Byte() = cert.Export(X509ContentType.Pkcs12, CertificatePassword)
Dim keyString As String = Convert.ToBase64String(certData)

@Jim Mischel が指摘したように、鍵データを base-64 でエンコードする必要がありました。

ちなみに、X509KeyStorageFlags.Exportableフラグを追加すると、キーをエクスポートしようとしたときに CryptographicException (「キーは指定された状態での使用には無効です。」) が修正されました。

于 2013-03-06T15:52:44.090 に答える