Peringatan: Halaman ini membahas API lama Google, yaitu Google Data API; halaman ini hanya relevan dengan API yang tercantum dalam direktori Google Data API, yang sebagian besar telah diganti dengan API yang lebih baru. Untuk mengetahui informasi tentang API baru tertentu, lihat dokumentasi API baru tersebut. Untuk mengetahui informasi tentang cara mengizinkan permintaan dengan API yang lebih baru, lihat Autentikasi dan Otorisasi Akun Google.
Dokumen ini menjelaskan cara menggunakan library klien Google Data API untuk terhubung ke Autentikasi AuthSub 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 pernah 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, mendapatkan token autentikasi sekali pakai, menukar token sekali pakai dengan token sesi, dan menandatangani permintaan.
Catatan: Library klien JavaScript memiliki varian AuthSub sendiri, yang disebut AuthSubJS. Untuk mengetahui informasi tentang cara menggunakan AuthSubJS di aplikasi JavaScript Anda, lihat Menggunakan Autentikasi "AuthSub" dengan Library Klien JavaScript.
Audiens
Dokumen ini ditujukan bagi programmer yang ingin aplikasi berbasis web mereka mengakses layanan Google atas nama pengguna, menggunakan library klien Google Data API.
Dokumen ini mengasumsikan bahwa Anda sudah memahami antarmuka AuthSub dan proses umum untuk menggabungkan AuthSub ke dalam aplikasi web Anda. Untuk 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, maka semua yang perlu Anda ketahui ada di Autentikasi AuthSub untuk Aplikasi Web. Anda tidak perlu menggunakan library klien Google Data API jika tidak ingin.
Berikut adalah ringkasan cara aplikasi Anda dapat mengautentikasi pengguna menggunakan AuthSub:
Aplikasi Anda membuat URL AuthSub yang sesuai, lalu mengirim pengguna ke URL tersebut agar mereka dapat login; sistem AuthSub mengirim pengguna kembali ke URL di situs Anda yang Anda tentukan, dan menampilkan token sekali pakai; aplikasi Anda secara opsional menukarkan token tersebut dengan token sesi; lalu aplikasi Anda mengirim token 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.
Bekerja dengan AuthSub dan Google Data API: contoh library klien
Bagian ini menunjukkan contoh penggunaan metode library klien Google Data API untuk mengikuti langkah-langkah yang diuraikan di bagian "Bekerja dengan AuthSub" dalam dokumentasi AuthSub.
Dalam contoh ini, kita 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 ini). Contoh ini mengasumsikan 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 Anda memutuskan untuk menggunakan token sesi di aplikasi web, Anda harus mengelola penyimpanan token sendiri. Dokumen ini tidak membahas pengelolaan token. Perhatikan juga bahwa token yang diminta dengan session=0
tidak dapat ditukar (diupgrade) nanti ke token sesi yang aktif dalam jangka panjang.
Tentukan apakah akan mendaftarkan aplikasi web Anda (secure=0 atau secure=1)
AuthSub dapat digunakan dalam tiga mode yang berbeda, tidak terdaftar, terdaftar, dan terdaftar dengan keamanan yang ditingkatkan. Bagian selanjutnya dari dokumen ini akan menyebut opsi terakhir sebagai AuthSub aman. Meskipun mode tidak terdaftar/terdaftar lebih mudah disiapkan daripada AuthSub yang aman, Google menganjurkan Anda untuk menggunakan token aman demi keamanan yang lebih baik.
Cara mendaftar
Memilih Pendaftaran untuk Aplikasi Berbasis Web akan memberikan manfaat berikut bagi aplikasi Anda:
- Tingkat keamanan yang lebih tinggi.
- Dipercaya oleh Google (tidak ada peringatan yang ditampilkan kepada pengguna di halaman Otorisasi Google).
AuthSub Terdaftar + Aman
Jika memutuskan untuk menggunakan AuthSub yang aman, Anda harus membuat pasangan sertifikat publik dan kunci pribadi RSA yang ditandatangani sendiri selain mendaftarkan aplikasi web Anda. Lihat Membuat kunci dan sertifikat untuk digunakan dengan mode terdaftar (di bawah) untuk contoh pembuatan sertifikat X.509.
Menentukan cakupan akses data Anda
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 kita 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 spesifik.
Misalnya, cakupan yang lebih sempit seperti scope=http://www.google.com/calendar/feeds/default/allcalendars/full akan membatasi akses token
hanya ke feed lengkap allcalendars. Menggunakan scope=http://www.google.com/calendar/feeds/ akan memungkinkan 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 spasi yang dienkode 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 akan meminta mereka untuk login ke Akun Google mereka.
(Untuk mengetahui informasi selengkapnya tentang URL AuthSubRequest, lihat Autentikasi AuthSub untuk Aplikasi Web selengkapnya.)
Untuk membuat URL AuthSubRequest di aplikasi Anda, gunakan yang 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 "next", aplikasi Anda dapat menggunakannya dengan berbagai cara untuk mengirim pengguna ke handler
AuthSubRequest. Pendekatan yang paling umum adalah menampilkan halaman yang memberi tahu pengguna bahwa mereka harus mengikuti link untuk
mengizinkan aplikasi Anda mengakses akun Google mereka; lalu melampirkan URL permintaan ke link tersebut. Misalnya, Anda dapat menampilkan string berikut di aplikasi web Anda:
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 "next" yang Anda berikan.
Ekstrak token sekali pakai
Saat Google mengalihkan kembali ke aplikasi Anda, token ditambahkan ke URL "next" sebagai parameter kueri. Dalam 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, maka saat Google mengalihkan kembali ke URL "next", aplikasi Anda dapat membaca cookie autentikasi untuk mengenali pengguna mana yang telah tiba di URL tersebut. Anda dapat menggunakan cookie tersebut untuk mengaitkan ID pengguna 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 anAuthSubTokenorSecureAuthSubTokenobject. # 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 Anda menggunakan AuthSub yang aman, pastikan untuk menyetel kunci pribadi RSA Anda sehingga 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 anAuthSubTokenorSecureAuthSubTokenobject. # 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 berikutnya adalah mengupgrade token tersebut untuk mendapatkan token sesi yang berlaku lama menggunakan URL AuthSubSessionToken, seperti yang dijelaskan dalam dokumentasi Autentikasi AuthSub untuk Aplikasi Web lengkap. Jika menggunakan AuthSub yang aman, Anda harus menyetel kunci pribadi RSA sebelum
melakukan pertukaran. Berikut beberapa contoh penggunaan 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 meneruskan 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 meneruskan 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, pertukaran memerlukan Anda untuk 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 sendiri tidak dikirim melalui jaringan. Library klien mengirimkan tanda tangan unik yang dibuat 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 di header Otorisasi, 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 Anda gunakan.
Mengambil informasi tentang token sesi
Jika ingin menguji bahwa klien dan server menyetujui parameter token, Anda dapat meneruskan token ke handler AuthSubTokenInfo, yang menampilkan serangkaian pasangan nama-nilai yang berisi informasi tentang token.
Java
Map<String, String> tokenInfo = AuthSubUtil.getTokenInfo(sessionToken, null);
Jika Anda 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 Anda 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 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 akan berakhir; klien Anda dapat menyimpan token sesi selama diperlukan.
Oleh karena itu, setelah klien Anda selesai menggunakan token sesi, klien dapat mencabut token menggunakan handler AuthSubRevokeToken, seperti yang dijelaskan dalam dokumentasi AuthSub.
Misalnya, jika Anda ingin mengelola token dengan cara seperti sesi tradisional, klien Anda dapat memperoleh token di awal sesi pengguna dan mencabutnya di akhir sesi pengguna.
Untuk mencabut token, gunakan kode berikut di setiap library klien:
Java
AuthSubUtil.revokeToken(sessionToken, null);
Jika Anda menggunakan AuthSub yang aman, teruskan kunci pribadi RSA Anda:
AuthSubUtil.revokeToken(sessionToken, privateKey);
.NET
AuthSubUtil.revokeToken(sessionToken, null);
Jika Anda 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 agar permintaan ditandatangani dengan kunci pribadi RSA Anda:
$wasRevoked = Zend_Gdata_AuthSub::AuthSubRevokeToken($sessionToken, $client);Python
calendar_service.RevokeAuthSubToken()
Referensi dan Contoh Tambahan
- Contoh AuthSub di Blog Tips Google Data API
- Contoh AuthSub library klien Python
- Contoh AuthSub library klien Java
- Artikel: Menggunakan AuthSub dengan Library Klien .NET
- Artikel: Menggunakan Autentikasi "AuthSub" dengan Library Klien JavaScript
Membuat kunci pribadi dan sertifikat publik penandatanganan sendiri untuk digunakan dengan AuthSub yang aman
Kunci pribadi digunakan untuk membuat tanda tangan, yang harus disertakan dengan 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 berformat PEM. Sertifikat harus dikirim 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 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 untuk menghapus parameter ini demi keamanan tambahan.
Parameter -sha1 menentukan bahwa kunci 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 Anda buat:
openssl pkcs8 -in myrsakey.pem -topk8 -nocrypt -out myrsakey.pk8
Atau, Anda dapat menggunakan penyimpanan kunci Java dan utilitas keytool untuk membuat pasangan 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