AuthSub di Library Klien Protokol Data Google

Peringatan: Halaman ini membahas API lama Google, yaitu Google Data API; halaman ini hanya relevan dengan API yang tercantum dalam direktori Google Data API, banyak di antaranya telah diganti dengan API yang lebih baru. Untuk informasi tentang API baru tertentu, lihat dokumentasi API baru. Untuk informasi tentang memberi otorisasi permintaan dengan API baru, lihat Autentikasi dan Otorisasi Akun Google.

Dokumen ini menjelaskan cara menggunakan library klien Google Data API untuk terhubung ke AuthSub Authentication untuk Aplikasi Web Google.

Antarmuka AuthSub memungkinkan aplikasi berbasis web mengakses layanan Google atas nama pengguna. Untuk mempertahankan tingkat keamanan yang tinggi, antarmuka AuthSub memungkinkan aplikasi mendapatkan token autentikasi tanpa menangani informasi login akun pengguna.

Library klien Google Data API menyediakan metode untuk membantu Anda menggunakan AuthSub di aplikasi web Anda. Secara khusus, ada metode untuk membuat URL permintaan, memperoleh token autentikasi sekali pakai, menukar token sekali pakai dengan token sesi, dan menandatangani permintaan.

Catatan: Library klien JavaScript memiliki ragam AuthSub sendiri, yang disebut AuthSubJS. Untuk mengetahui informasi tentang cara menggunakan AuthSubJS di aplikasi JavaScript, lihat Menggunakan Autentikasi "AuthSub" dengan Library Klien JavaScript.

Audiens

Dokumen ini ditujukan bagi programmer yang ingin agar aplikasi berbasis web mereka mengakses layanan Google atas nama pengguna, menggunakan library klien Google Data API.

Dokumen ini mengasumsikan bahwa Anda telah memahami antarmuka AuthSub dan proses umum untuk memasukkan AuthSub ke dalam aplikasi web Anda. Untuk mengetahui deskripsi lengkap protokol AuthSub, lihat Autentikasi AuthSub untuk Aplikasi Web.

Menggunakan AuthSub dan Google Data API tanpa library klien

Jika Anda ingin klien aplikasi web berinteraksi dengan layanan Data Google menggunakan AuthSub sebagai sistem autentikasi, semua yang perlu Anda ketahui ada di Autentikasi AuthSub untuk Aplikasi Web. Anda tidak perlu menggunakan library klien Google Data API jika tidak menginginkannya.

Berikut adalah garis besar tentang cara aplikasi Anda mengautentikasi pengguna menggunakan AuthSub:

Aplikasi Anda membuat URL AuthSub yang sesuai, lalu mengarahkan pengguna ke URL tersebut agar mereka dapat login; sistem AuthSub mengarahkan pengguna kembali ke URL di situs yang Anda tentukan, dan menampilkan token sekali pakai; aplikasi Anda secara opsional menukar token tersebut dengan token sesi; lalu aplikasi Anda mengirimkan token tersebut di header Otorisasi dengan setiap permintaan yang dikirim aplikasi ke layanan.

Library klien Google Data API menyederhanakan proses otorisasi ini dengan menangani berbagai detail untuk Anda. Dokumen ini menjelaskan caranya.

Menggunakan AuthSub dan Google Data API: contoh library klien

Bagian ini menampilkan contoh penggunaan metode library klien Google Data API untuk mengikuti langkah-langkah yang diuraikan di bagian "Bekerja Dengan AuthSub" dari dokumentasi AuthSub.

Dalam contoh ini, kami mengintegrasikan antarmuka AuthSub ke dalam aplikasi web yang berinteraksi dengan Google Kalender (meskipun Anda tidak perlu mengetahui apa pun tentang Google Kalender untuk mengikuti contoh tersebut). Contoh ini mengasumsikan bahwa aplikasi web dihosting di example.com.

Tentukan jenis token yang akan digunakan (session=0 atau session=1)

Anda dapat memilih untuk menggunakan token sekali pakai (session=0) atau token sesi (session=1). Dokumen ini akan menggunakan token sesi, karena lebih berguna dalam aplikasi yang akan membuat beberapa permintaan API. Seperti yang dibahas dalam dokumentasi AuthSub, jika memutuskan untuk menggunakan token sesi di aplikasi web, Anda harus mengelola penyimpanan token sendiri. Dokumen ini tidak mencakup pengelolaan token. Perlu diketahui juga bahwa token yang diminta dengan session=0 nantinya tidak dapat ditukarkan (diupgrade) ke token sesi yang berumur panjang.

Tentukan apakah akan mendaftarkan aplikasi web (secure=0 atau secure=1)

AuthSub dapat digunakan dalam tiga mode yang berbeda, tidak terdaftar, terdaftar, dan terdaftar dengan keamanan yang ditingkatkan. Sisa dokumen ini akan merujuk ke opsi terakhir sebagai AuthSub aman. Meskipun mode tidak terdaftar/terdaftar lebih mudah disiapkan daripada AuthSub yang aman, Google mendorong Anda untuk menggunakan token aman untuk meningkatkan keamanannya.

Cara mendaftar

Memilih Pendaftaran untuk Aplikasi Berbasis Web akan memberi aplikasi Anda manfaat berikut:

  1. Tingkat keamanan yang lebih tinggi.
  2. Dipercaya oleh Google (tidak ada peringatan yang ditampilkan kepada pengguna di halaman Otorisasi Google).

AuthSub Terdaftar + Aman AuthSub

Jika memutuskan untuk mengautentikasi AuthSub yang aman, Anda harus membuat pasangan kunci pribadi RSA dan sertifikat publik yang ditandatangani sendiri selain mendaftarkan aplikasi web Anda. Lihat Membuat kunci dan sertifikat untuk digunakan dengan mode terdaftar (di bawah) untuk mengetahui contoh pembuatan sertifikat X.509.

Menentukan cakupan akses data

Setiap layanan Google menentukan nilai scope yang menentukan (dan mungkin mempersempit) akses token ke data pengguna. Lihat FAQ untuk mengetahui daftar nilai scope yang tersedia.

Karena kami memutuskan untuk berinteraksi dengan Google Calendar API, scope harus berupa http://www.google.com/calendar/feeds/.

Catatan: Selalu tetapkan nilai cakupan ke URL seluas mungkin kecuali jika Anda memerlukan pembatasan yang lebih ketat. Misalnya, cakupan yang lebih sempit seperti scope=http://www.google.com/calendar/feeds/default/allcalendars/full akan membatasi akses token ke hanya semua kalender/feed penuh. Penggunaan scope=http://www.google.com/calendar/feeds/ akan mengizinkan akses ke semua feed Kalender: http://www.google.com/calendar/feeds/*.

Token multi-cakupan

Untuk membuat token yang mengakses beberapa Google Data API, pisahkan setiap cakupan dengan ruang berenkode URL. Contoh di bawah membuat token, yang akan memiliki akses ke data Google Kontak dan Google Kalender pengguna.

scope=http://www.google.com/calendar/feeds/%20http://www.google.com/m8/feeds/

Meminta token autentikasi sekali pakai

Untuk mendapatkan token AuthSub bagi pengguna dan layanan tertentu, aplikasi Anda harus mengalihkan pengguna ke URL AuthSubRequest, yang meminta mereka untuk login ke Akun Google miliknya. (Untuk informasi selengkapnya terkait URL AuthSubRequest, lihat Autentikasi AuthSub untuk Aplikasi Web.)

Untuk membuat URL AuthSubRequest di aplikasi Anda, gunakan hal berikut untuk setiap library klien:

Java

import com.google.gdata.client.*;

String nextUrl = "http://www.example.com/RetrieveToken.jsp";
String scope = "http://www.google.com/calendar/feeds/";
boolean secure = false;  // set secure=true to request secure AuthSub tokens
boolean session = true;
String authSubUrl = AuthSubUtil.getRequestUrl(nextUrl, scope, secure, session);

Jika Anda ingin mengautentikasi pengguna di domain G Suite Anda:

import com.google.gdata.client.*;

String hostedDomain = "example.com";
String nextUrl = "http://www.example.com/RetrieveToken.jsp";
String scope = "http://www.google.com/calendar/feeds/";
boolean secure = false;  // set secure=true to request AuthSub tokens
boolean session = true;
String authSubUrl = AuthSubUtil.getRequestUrl(hostedDomain, nextUrl, scope, secure, session);

.NET

using Google.GData.Client;

String nextUrl = "http://www.example.com/RetrieveToken.aspx";
String scope = "http://www.google.com/calendar/feeds/";
bool secure = false; // set secure=true to request secure AuthSub tokens
bool session = true;
String authSubUrl = AuthSubUtil.getRequestUrl(nextUrl, scope, secure, session);

Jika Anda ingin mengautentikasi pengguna di domain G Suite Anda:

using Google.GData.Client;

String hostedDomain = "example.com";
String nextUrl = "http://www.example.com/RetrieveToken.aspx";
String scope = "http://www.google.com/calendar/feeds/";
bool secure = false; // set secure=true to request secure AuthSub tokens
bool session = true;
String authSubUrl = AuthSubUtil.getRequestUrl(hostedDomain, nextUrl, scope, secure, session);

PHP

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_AuthSub');

$nextUrl = 'http://www.example.com/RetrieveToken.php';
$scope = 'http://www.google.com/calendar/feeds/';
$secure = 0;  // set $secure=1 to request secure AuthSub tokens
$session = 1;
$authSubUrl = Zend_Gdata_AuthSub::getAuthSubTokenUri($nextUrl, $scope, $secure, $session);

Jika Anda ingin mengautentikasi pengguna di domain G Suite Anda:

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_AuthSub');

$hostedDomain = 'example.com';
$nextUrl = 'http://www.example.com/RetrieveToken.php';
$scope = 'http://www.google.com/calendar/feeds/';
$secure = 0;  // set $secure=1 to request secure AuthSub tokens
$session = 1;
$authSubUrl = Zend_Gdata_AuthSub::getAuthSubTokenUri($nextUrl, $scope, $secure, $session) . '&hd=' . $hostedDomain;

Python

import gdata.auth

next = 'http://www.example.com/RetrieveToken.pyc'
scope = 'http://www.google.com/calendar/feeds/'
secure = False  # set secure=True to request secure AuthSub tokens
session = True
auth_sub_url = gdata.auth.GenerateAuthSubRequestUrl(next, scope, secure=secure, session=session)

Jika Anda ingin mengautentikasi pengguna di domain G Suite Anda:

import gdata.auth

hosted_domain = 'example.com'
next = 'http://www.example.com/RetrieveToken.pyc'
scope = 'http://www.google.com/calendar/feeds/'
secure = False  # set secure=True to request secure AuthSub tokens
session = True
auth_sub_url = gdata.auth.GenerateAuthSubRequestUrl(next, scope, secure=secure, session=session, domain=hosted_domain)

Setelah membuat URL "berikutnya", aplikasi Anda dapat menggunakannya dalam berbagai cara untuk mengarahkan pengguna ke pengendali AuthSubRequest. Pendekatan yang paling umum adalah menampilkan halaman yang memberi tahu pengguna bahwa mereka perlu mengikuti link untuk memberi otorisasi aplikasi Anda agar dapat mengakses Akun Google mereka; lalu melampirkan URL permintaan ke link tersebut. Misalnya, Anda dapat membuat string berikut di aplikasi web:

String authorizationUrl =
        "<p>MyApp needs access to your Google Calendar account to read your Calendar feed. " +
        "To authorize MyApp to access your account, <a href=\"" + authSubUrl + "\">log in to your account</a>.</p>";

Pengguna mengikuti link ke halaman AuthSub di Google, dan login. Sistem AuthSub kemudian mengalihkan pengguna kembali ke aplikasi Anda menggunakan URL "berikutnya" yang Anda berikan.

Mengekstrak token sekali pakai

Saat Google mengalihkan kembali ke aplikasi Anda, token akan ditambahkan ke URL "berikutnya" sebagai parameter kueri. Pada contoh di atas, setelah pengguna login, Google akan mengalihkan ke URL seperti http://www.example.com/RetrieveToken?token=DQAADKEDE. Aplikasi Anda harus mengekstrak nilai token dari parameter kueri URL-nya.

Jika aplikasi Anda menetapkan cookie autentikasi di browser pengguna sebelum mengirimkannya ke sistem AuthSub, lalu saat Google mengalihkan kembali ke URL "berikutnya", aplikasi Anda dapat membaca cookie autentikasi untuk mengenali pengguna mana yang telah tiba di URL tersebut. Anda dapat menggunakan cookie tersebut untuk mengaitkan User-ID di aplikasi Anda dengan token AuthSub yang diambil dari Google.

Library klien menyediakan metode praktis untuk mengekstrak token sekali pakai:

Java

String singleUseToken = AuthSubUtil.getTokenFromReply(httpServletRequest.getQueryString());

.NET

String singleUseToken = Request.QueryString["token"];
// or
String singleUseToken = AuthSubUtil.getTokenFromReply(new Uri(Request.QueryString));

PHP

$singleUseToken = $_GET['token'];

Python

current_url = 'http://' + req.hostname + req.unparsed_uri
# Unlike the other calls, extract_auth_sub_token_from_url() will create an AuthSubToken or SecureAuthSubToken object.
# Use str(single_use_token) to return the token's string value.
single_use_token = gdata.auth.extract_auth_sub_token_from_url(current_url)

Jika menggunakan AuthSub yang aman, pastikan Anda menyetel kunci pribadi RSA agar SecureAuthSubToken dibuat:

f = open('/path/to/yourRSAPrivateKey.pem')
rsa_key = f.read()
f.close()
current_url = 'http://' + req.hostname + req.unparsed_uri
# Unlike the other calls, extract_auth_sub_token_from_url() will create an AuthSubToken or SecureAuthSubToken object.
# Use str(single_use_token) to return the token's string value.
single_use_token = gdata.auth.extract_auth_sub_token_from_url(current_url, rsa_key=rsa_key)

Meminta token sesi

Token yang Anda ambil dari URL selalu merupakan token sekali pakai. Langkah selanjutnya adalah mengupgrade token tersebut untuk token sesi yang tahan lama menggunakan URL AuthSubSessionToken, seperti yang dijelaskan dalam dokumentasi lengkap AuthSub Authentication untuk Aplikasi Web. Jika menggunakan AuthSub yang aman, Anda harus menyetel kunci pribadi RSA sebelum melakukan pertukaran. Berikut adalah beberapa contoh yang menggunakan setiap library klien:

Java

import com.google.gdata.client.*;
import com.google.gdata.client.calendar.*;

String sessionToken = AuthSubUtil.exchangeForSessionToken(singleUseToken, null);

CalendarService calendarService = new CalendarService("google-ExampleApp-v1.0");
calendarService.setAuthSubToken(sessionToken, null);

// ready to interact with Calendar feeds

Untuk AuthSub yang aman, teruskan kunci pribadi RSA Anda ke exchangeForSessionToken, bukan memasukkan null:

import com.google.gdata.client.*;
import com.google.gdata.client.calendar.*;

java.security.PrivateKey privateKey =
    AuthSubUtil.getPrivateKeyFromKeystore("AuthSubExample.jks", "privKeyPa$$word", "AuthSubExample", "privKeyPa$$word");
String sessionToken = AuthSubUtil.exchangeForSessionToken(singleUseToken, privateKey);

CalendarService calendarService = new CalendarService("google-ExampleApp-v1.0");
calendarService.setAuthSubToken(sessionToken, privateKey);

// ready to interact with Calendar feeds

.NET

using Google.GData.Client;
using Google.GData.Calendar;

String sessionToken = AuthSubUtil.exchangeForSessionToken(singleUseToken, null).ToString();

GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("cl", "google-ExampleApp-v1.0");
authFactory.Token = (String) sessionToken;

CalendarService calendarService = new CalendarService(authFactory.ApplicationName);
calendarService.RequestFactory = authFactory;

// ready to interact with Calendar feeds

Untuk AuthSub yang aman, teruskan kunci pribadi RSA Anda ke exchangeForSessionToken, bukan memasukkan null:

using Google.GData.Client;
using Google.GData.Calendar;

protected AsymmetricAlgorithm getRsaKey()
{
  X509Certificate2 cert = new X509Certificate2("C:/MyAspSite/test_cert.pfx", "privKeyPa$$word");
  RSACryptoServiceProvider privateKey = cert.PrivateKey as RSACryptoServiceProvider;
  return privateKey;
}

AsymmetricAlgorithm rsaKey = getRsaKey();
String sessionToken = AuthSubUtil.exchangeForSessionToken(singleUseToken, rsaKey).ToString();

GAuthSubRequestFactory authFactory = new GAuthSubRequestFactory("cl", "google-ExampleApp-v1.0");
authFactory.Token = (String) sessionToken;
authFactory.PrivateKey = rsaKey;

CalendarService calendarService = new CalendarService(authFactory.ApplicationName);
calendarService.RequestFactory = authFactory;

// ready to interact with Calendar feeds

PHP

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_Calendar');

$sessionToken = Zend_Gdata_AuthSub::getAuthSubSessionToken($singleUseToken);

// Create a Calendar service object and set the session token for subsequent requests
$calendarService = new Zend_Gdata_Calendar(null, 'google-ExampleApp-v1.0');
$calendarService->setAuthSubToken($sessionToken);

// ready to interact with Calendar feeds

Untuk AuthSub yang aman, bursa mengharuskan Anda menyiapkan Zend_Gdata_HttpClient terlebih dahulu dan menyetel kunci pribadi RSA menggunakan setAuthSubPrivateKeyFile():

require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_Calendar');

$client = new Zend_Gdata_HttpClient();
$client->setAuthSubPrivateKeyFile('/path/to/myrsakey.pem', null, true);
$sessionToken = Zend_Gdata_AuthSub::getAuthSubSessionToken($singleUseToken, $client);

$calendarService = new Zend_Gdata_Calendar($client, 'google-ExampleApp-v1.0');
$calendarService->setAuthSubToken($sessionToken);

// ready to interact with Calendar feeds

Python

import gdata.calendar
import gdata.calendar.service

calendar_service = gdata.calendar.service.CalendarService()
calendar_service.UpgradeToSessionToken(single_use_token)  # calls gdata.service.SetAuthSubToken() for you

# ready to interact with Calendar feeds

Catatan: Prosesnya sama untuk AuthSub yang aman selama Anda telah menggunakan gdata.auth.extract_auth_sub_token_from_url(url, rsa_key=rsa_key) untuk mengekstrak token sekali pakai.

Catatan: Saat menggunakan AuthSub yang aman, kunci pribadi Anda tidak akan dikirim melalui jaringan. Library klien mengirimkan tanda tangan unik yang dihasilkan dengan menandatangani permintaan menggunakan kunci Anda, bukan kunci itu sendiri.

Menggunakan token sesi

Anda dapat menggunakan token sesi untuk mengautentikasi permintaan ke server dengan menempatkan token dalam header Authorization, seperti yang dijelaskan dalam dokumentasi AuthSub.

Setelah menetapkan token sesi, Anda dapat menggunakan panggilan library klien Google Data API standar untuk berinteraksi dengan layanan, tanpa harus memikirkan token. Untuk mengetahui detailnya, lihat dokumentasi library klien dan panduan developer Google Data API untuk layanan dan bahasa yang berinteraksi dengan Anda.

Mengambil informasi tentang token sesi

Jika ingin menguji apakah klien dan server menyetujui parameter token, Anda dapat meneruskan token ke pengendali AuthSubTokenInfo, yang menampilkan kumpulan pasangan nilai nama yang berisi informasi tentang token tersebut.

Java

Map<String, String> tokenInfo = AuthSubUtil.getTokenInfo(sessionToken, null);

Jika menggunakan AuthSub yang aman, teruskan kunci pribadi RSA Anda:

Map<String, String> tokenInfo = AuthSubUtil.getTokenInfo(sessionToken, privateKey);

.NET

Dictionary<String, String> tokenInfo = AuthSubUtil.GetTokenInfo(sessionToken, null);

Jika menggunakan AuthSub yang aman, teruskan kunci pribadi RSA Anda:

Dictionary<String, String> tokenInfo = AuthSubUtil.GetTokenInfo(sessionToken, privateKey);

PHP

$tokenInfo = Zend_Gdata_AuthSub::getAuthSubTokenInfo($sessionToken);

Jika Anda menggunakan AuthSub yang aman, teruskan Zend_Gdata_HttpClient Anda agar permintaan ditandatangani dengan kunci pribadi RSA Anda:

$tokenInfo = Zend_Gdata_AuthSub::getAuthSubTokenInfo($sessionToken, $client);

Python

token_info = calendar_service.AuthSubTokenInfo()

Mencabut token sesi

Token sesi AuthSub tidak memiliki akhir masa berlaku; klien Anda dapat menyimpan token sesi selama yang diperlukan.

Oleh karena itu, ketika klien Anda selesai menggunakan token sesi, token dapat dicabut menggunakan pengendali AuthSubRevokeToken, seperti yang dijelaskan dalam dokumentasi AuthSub.

Misalnya, jika Anda ingin mengelola token dengan cara seperti sesi tradisional, klien Anda bisa mendapatkan token di awal sesi pengguna dan mencabutnya di akhir sesi pengguna.

Untuk mencabut token, gunakan yang berikut di setiap library klien:

Java

AuthSubUtil.revokeToken(sessionToken, null);

Jika menggunakan AuthSub yang aman, teruskan kunci pribadi RSA Anda:

AuthSubUtil.revokeToken(sessionToken, privateKey);

.NET

AuthSubUtil.revokeToken(sessionToken, null);

Jika menggunakan AuthSub yang aman, teruskan kunci pribadi RSA Anda:

AuthSubUtil.revokeToken(sessionToken, privateKey);

PHP

$wasRevoked = Zend_Gdata_AuthSub::AuthSubRevokeToken($sessionToken);

Jika Anda menggunakan AuthSub yang aman, teruskan Zend_Gdata_HttpClient Anda agar permintaan ditandatangani dengan kunci pribadi RSA Anda:

$wasRevoked = Zend_Gdata_AuthSub::AuthSubRevokeToken($sessionToken, $client);

Python

calendar_service.RevokeAuthSubToken()

Referensi dan Contoh Tambahan

Kembali ke atas

Membuat kunci pribadi dan sertifikat publik yang ditandatangani sendiri untuk digunakan dengan AuthSub yang aman

Kunci pribadi digunakan untuk membuat tanda tangan, yang harus disertakan pada setiap permintaan. Kunci publik yang disematkan dalam sertifikat digunakan oleh Google untuk memverifikasi tanda tangan. Kunci publik harus berupa kunci RSA 1024-bit yang dienkode dalam sertifikat X.509 dalam format PEM. Sertifikat harus dikirimkan ke Google pada saat pendaftaran.

Bagian berikut memberikan contoh cara membuat kunci dan sertifikat menggunakan dua alat tertentu: utilitas OpenSSL dan utilitas keytool Java.

Contoh ini tidak khusus untuk Google Data API; Anda dapat menggunakan aplikasi utilitas yang sama untuk membuat kunci untuk tujuan apa pun.

Contoh ini mengasumsikan bahwa perusahaan Anda bernama My_Company, dan berlokasi di Mountain View, California, AS, dengan nama domain example.com.

Membuat kunci menggunakan OpenSSL

Untuk membuat pasangan kunci RSA dan sertifikat yang sesuai, Anda dapat menggunakan perintah berikut:

# Generate the RSA keys and certificate
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -sha1 -subj \
  '/C=US/ST=CA/L=Mountain View/CN=www.example.com' -keyout \
  myrsakey.pem -out /tmp/myrsacert.pem

Peringatan: Menyertakan parameter -nodes akan membuat kunci pribadi tanpa sandi untuk melindunginya. Namun, Anda harus mempertimbangkan penghapusan parameter ini untuk keamanan tambahan.

Parameter -sha1 menentukan bahwa kunci tersebut akan digunakan untuk membuat tanda tangan SHA1.

Parameter -subj menentukan identitas aplikasi yang diwakili oleh sertifikat.

Parameter -keyout menentukan file yang akan berisi kunci. File ini berisi informasi sensitif dan harus dilindungi serta tidak dibagikan kepada siapa pun.

Parameter -out menentukan file yang akan berisi sertifikat dalam format PEM (yang dapat dikirim ke Google saat mendaftar).

Membuat kunci untuk klien .NET

Framework .NET tidak memahami kunci atau sertifikat yang disimpan dalam format PEM. Oleh karena itu, langkah tambahan diperlukan setelah Anda membuat file .pem:

openssl pkcs12 -export -in test_cert.pem -inkey myrsacert.pem -out myrsacert.pfx -name "Testing Certificate"

Langkah ini akan membuat file PFX dari kunci pribadi dan sertifikat Anda. File ini dapat diimpor ke library klien .NET untuk menandatangani permintaan yang dibuat ke Google Data API secara digital.

Membuat kunci untuk klien Java

Klien Java menerima kunci pribadi dalam format PKCS#8. Setelah membuat kunci/sertifikat menggunakan petunjuk di atas, buat file .pk8 dari file .pem yang dihasilkan:

openssl pkcs8 -in myrsakey.pem -topk8 -nocrypt -out myrsakey.pk8

Atau, Anda dapat menggunakan key store Java dan utilitas keytool untuk membuat sepasang kunci RSA dan sertifikat yang sesuai. Gunakan perintah berikut:

# Generate the RSA keys and certificate
keytool -genkey -v -alias Example -keystore ./Example.jks\
  -keyalg RSA -sigalg SHA1withRSA\
  -dname "CN=www.example.com, OU=Engineering, O=My_Company, L=Mountain  View, ST=CA, C=US"\
  -storepass changeme -keypass changeme

Peringatan: "changeme" bukan sandi yang baik; ini hanyalah contoh.

Parameter -dname menentukan identitas aplikasi yang diwakili oleh sertifikat. Parameter -storepass menentukan sandi untuk melindungi keystore. Parameter -keypass menentukan sandi untuk melindungi kunci pribadi.

Untuk menulis sertifikat ke file yang dapat digunakan di alat ManageDomains, gunakan perintah berikut:

# Output the public certificate to a file
keytool -export -rfc -keystore ./Example.jks -storepass changeme \
  -alias Example -file mycert.pem

Kembali ke atas