Uyarı: Bu sayfa, Google'ın eski API'leri olan Google Veri API'leri hakkındadır. Yalnızca Google Veri API'leri dizininde listelenen API'ler için geçerlidir. Bu API'lerin çoğu daha yeni API'lerle değiştirilmiştir. Belirli bir yeni API hakkında bilgi edinmek için yeni API'nin belgelerine bakın. Daha yeni bir API ile istekleri yetkilendirme hakkında bilgi edinmek için Google Hesapları Kimlik Doğrulama ve Yetkilendirme başlıklı makaleyi inceleyin.
Bu belgede, Google'ın Web Uygulamaları İçin AuthSub Kimlik Doğrulaması'na bağlanmak üzere Google Veri API'si istemci kitaplıklarının nasıl kullanılacağı açıklanmaktadır.
AuthSub arayüzü, web tabanlı bir uygulamanın kullanıcı adına bir Google hizmetine erişmesine olanak tanır. AuthSub arayüzü, yüksek düzeyde güvenlik sağlamak için uygulamanın kullanıcının hesap giriş bilgilerini hiçbir zaman işlememesine rağmen kimlik doğrulama jetonu almasını sağlar.
Google Data API istemci kitaplıkları, web uygulamanızda AuthSub'ı kullanmanıza yardımcı olacak yöntemler sunar. Özellikle istek URL'sini oluşturma, tek kullanımlık kimlik doğrulama jetonu edinme, tek kullanımlık jetonu oturum jetonuyla değiştirme ve isteği imzalama yöntemleri vardır.
Not: JavaScript istemci kitaplığının AuthSubJS adlı kendi AuthSub sürümü vardır. AuthSubJS'yi JavaScript uygulamalarınızda kullanma hakkında bilgi edinmek için JavaScript İstemci Kitaplığı ile "AuthSub" Kimlik Doğrulaması Kullanma başlıklı makaleyi inceleyin.
Kitle
Bu belge, web tabanlı uygulamalarının Google Data API'leri istemci kitaplıklarını kullanarak kullanıcılar adına Google hizmetlerine erişmesini isteyen programcılar için hazırlanmıştır.
Bu belgede, AuthSub arayüzü ve AuthSub'ı web uygulamanıza dahil etme ile ilgili genel süreç hakkında bilgi sahibi olduğunuz varsayılmaktadır. AuthSub protokolünün tam açıklaması için Web Uygulamaları İçin AuthSub Kimlik Doğrulaması başlıklı makaleyi inceleyin.
AuthSub ve Google Data API'lerini istemci kitaplıkları olmadan kullanma
Web uygulaması istemcinizin kimlik doğrulama sistemi olarak AuthSub'ı kullanarak bir Google Veri Hizmeti ile etkileşim kurmasını istiyorsanız, gerçekten bilmeniz gereken her şey Web Uygulamaları İçin AuthSub Kimlik Doğrulaması bölümünde açıklanmıştır. İstemiyorsanız Google Veri API'leri istemci kitaplıklarını kullanmanız gerekmez.
Uygulamanızın AuthSub kullanarak kullanıcı kimliğini nasıl doğrulayabileceğine dair bir taslağı aşağıda bulabilirsiniz:
Uygulamanız uygun AuthSub URL'sini oluşturur ve ardından kullanıcıyı oturum açabilmesi için bu URL'ye yönlendirir. AuthSub sistemi, kullanıcıyı sitenizde belirttiğiniz URL'ye geri gönderir ve tek kullanımlık bir jeton döndürür. Uygulamanız isteğe bağlı olarak bu jetonu oturum jetonuyla değiştirir. Ardından uygulamanız, hizmete gönderdiği her istekle birlikte yetkilendirme üstbilgisindeki jetonu gönderir.
Google Data API'leri istemci kitaplıkları, çeşitli ayrıntıları sizin yerinize işleyerek bu yetkilendirme sürecini basitleştirir. Bu belgede nasıl yapılacağı açıklanmaktadır.
AuthSub ve Google Data API'leriyle çalışma: istemci kitaplığı örnekleri
Bu bölümde, AuthSub belgelerinin "AuthSub ile Çalışma" bölümünde belirtilen adımları uygulamak için Google Veri API'leri istemci kitaplığı yöntemlerinin nasıl kullanılacağına dair bir örnek gösterilmektedir.
Bu örnekte, AuthSub arayüzünü Google Takvim ile etkileşimde bulunan bir web uygulamasına entegre ediyoruz (örneği takip etmek için Google Takvim hakkında herhangi bir şey bilmeniz gerekmez). Örnekte, web uygulamasının example.com adresinde barındırıldığı varsayılmaktadır.
Hangi tür jetonun kullanılacağına karar verin (session=0 veya session=1).
Tek kullanımlık jetonlar (session=0) veya oturum jetonları (session=1) kullanmayı seçebilirsiniz.
Bu dokümanda, birden fazla API isteğinde bulunacak uygulamalarda daha kullanışlı oldukları için oturum jetonları kullanılacaktır.
AuthSub belgelerinde belirtildiği gibi, web uygulamanızda oturum jetonları kullanmaya karar verirseniz jeton depolama alanını kendiniz yönetmeniz gerekir. Bu dokümanda jeton yönetimi ele alınmamaktadır. Ayrıca session=0 ile istenen jetonların daha sonra uzun süreli oturum jetonuyla değiştirilemeyeceğini (yükseltilemeyeceğini) unutmayın.
Web uygulamanızı kaydedip kaydetmeyeceğinize karar verin (secure=0 veya secure=1).
AuthSub üç farklı modda kullanılabilir: kayıtsız, kayıtlı ve gelişmiş güvenlik ile kayıtlı. Bu belgenin geri kalanında son seçenek güvenli AuthSub olarak adlandırılacaktır. Kayıtlı/kayıtsız modun güvenli AuthSub'a kıyasla kurulumu daha basit olsa da Google, gelişmiş güvenlik için güvenli jetonlar kullanmanızı önerir.
Nasıl kaydolunur?
Web Tabanlı Uygulamalar İçin Kayıt'ı seçtiğinizde uygulamanız aşağıdaki avantajlardan yararlanır:
- Daha yüksek bir güvenlik düzeyi.
- Google tarafından güvenilir olarak kabul edilme (Google yetkilendirme sayfasında kullanıcıya uyarı gösterilmez).
Kayıtlı + Güvenli AuthSub
Güvenli AuthSub'ı kullanmaya karar verirseniz web uygulamanızı kaydetmenin yanı sıra kendinden imzalı bir RSA özel anahtarı ve ortak sertifika çifti oluşturmanız gerekir. X.509 sertifikası oluşturma örnekleri için Kayıtlı modda kullanılacak anahtar ve sertifika oluşturma (aşağıda) başlıklı makaleyi inceleyin.
Veri erişiminizin kapsamını belirleme
Her Google hizmeti, jetonun kullanıcı verilerine erişimini belirleyen (ve muhtemelen daraltan) bir scope değeri tanımlar.
Kullanılabilir scope değerlerinin listesi için SSS bölümüne bakın.
Google Calendar API ile etkileşim kurmaya karar verdiğimiz için scope değeri http://www.google.com/calendar/feeds/ olmalıdır.
Not: Daha ayrıntılı bir kısıtlamaya ihtiyacınız olmadığı sürece kapsam değerini her zaman mümkün olan en geniş URL'ye ayarlayın.
Örneğin, scope=http://www.google.com/calendar/feeds/default/allcalendars/full gibi daha dar bir kapsam, jetonun erişimini yalnızca allcalendars/full feed ile kısıtlar. scope=http://www.google.com/calendar/feeds/ kullanıldığında Takvim'in tüm feed'lerine (http://www.google.com/calendar/feeds/*) erişilebilir.
Çok kapsamlı jetonlar
Birden fazla Google Veri API'sine erişen jetonlar oluşturmak için her kapsamı URL kodlu bir boşlukla ayırın. Aşağıdaki örnekte, kullanıcının hem Google Kişiler hem de Google Takvim verilerine erişebilecek bir jeton oluşturulmaktadır.
scope=http://www.google.com/calendar/feeds/%20http://www.google.com/m8/feeds/
Tek kullanımlık kimlik doğrulama jetonu isteğinde bulunma
Belirli bir kullanıcı ve belirli bir hizmet için AuthSub jetonu almak üzere uygulamanız, kullanıcıyı AuthSubRequest URL'sine yönlendirmelidir. Bu URL, kullanıcıdan Google Hesabı'na giriş yapmasını ister.
(AuthSubRequest URL'si hakkında daha fazla bilgi için Web Uygulamaları için AuthSub Kimlik Doğrulaması başlıklı makalenin tamamına bakın.)
Uygulamanızda AuthSubRequest URL'sini oluşturmak için her istemci kitaplığı için aşağıdakileri kullanın:
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);
G Suite alanınızdaki kullanıcıların kimliğini doğrulamak istiyorsanız:
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);
G Suite alanınızdaki kullanıcıların kimliğini doğrulamak istiyorsanız:
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);
G Suite alanınızdaki kullanıcıların kimliğini doğrulamak istiyorsanız:
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)
G Suite alanınızdaki kullanıcıların kimliğini doğrulamak istiyorsanız:
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)
"Sonraki" URL'yi oluşturduktan sonra uygulamanız, kullanıcıyı AuthSubRequest işleyicisine göndermek için bu URL'yi çeşitli şekillerde kullanabilir. En yaygın yaklaşım, kullanıcıya uygulamanızı Google Hesabı'na erişmeye yetkilendirmek için bir bağlantıyı takip etmesi gerektiğini söyleyen bir sayfa göstermektir. Ardından, istek URL'sini bağlantıya ekleyin. Örneğin, web uygulamanızda aşağıdaki dizeyi çıkış olarak verebilirsiniz:
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>";Kullanıcı, Google'daki AuthSub sayfasına giden bağlantıyı takip eder ve oturum açar. AuthSub sistemi daha sonra, sağladığınız "next" URL'sini kullanarak kullanıcıyı uygulamanıza geri yönlendirir.
Tek kullanımlık jetonu ayıklayın
Google, uygulamanıza geri yönlendirdiğinde jeton, "next" URL'sine sorgu parametresi olarak eklenir. Yukarıdaki örneklerde, kullanıcı giriş yaptıktan sonra Google http://www.example.com/RetrieveToken?token=DQAADKEDE gibi bir URL'ye yönlendirir.
Uygulamanız, URL sorgu parametresinden jeton değerini ayıklamalıdır.
Uygulamanız, kullanıcıyı AuthSub sistemine göndermeden önce kullanıcının tarayıcısında bir kimlik doğrulama çerezi ayarladıysa Google, "sonraki" URL'ye geri yönlendirdiğinde uygulamanız, hangi kullanıcının bu URL'ye geldiğini anlamak için kimlik doğrulama çerezini okuyabilir. Uygulamanızdaki bir kullanıcı kimliğini Google'dan alınan AuthSub jetonuyla ilişkilendirmek için bu tür bir çerez kullanabilirsiniz.
İstemci kitaplıkları, tek kullanımlık jetonu ayıklamak için kolaylık sağlayan yöntemler sunar:
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)
Güvenli AuthSub kullanıyorsanız RSA özel anahtarınızı ayarladığınızdan emin olun. Böylece SecureAuthSubToken oluşturulur:
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)
Oturum jetonu isteğinde bulunma
URL'den aldığınız jeton her zaman tek kullanımlık bir jetondur. Bir sonraki adım, Web Uygulamaları İçin AuthSub Kimlik Doğrulaması dokümanının tamamında açıklandığı gibi, AuthSubSessionToken URL'sini kullanarak bu jetonu uzun süreli bir oturum jetonuna yükseltmektir. Güvenli AuthSub kullanıyorsanız takas yapmadan önce RSA özel anahtarınızı ayarlamanız gerekir. Aşağıda, her bir istemci kitaplığının kullanıldığı bazı örnekler verilmiştir:
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
Güvenli AuthSub için null yerine RSA özel anahtarınızı exchangeForSessionToken öğesine iletin:
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
Güvenli AuthSub için null yerine RSA özel anahtarınızı exchangeForSessionToken öğesine iletin:
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
Güvenli AuthSub için değişim, öncelikle bir Zend_Gdata_HttpClient oluşturmanızı ve setAuthSubPrivateKeyFile() kullanarak RSA özel anahtarınızı ayarlamanızı gerektirir:
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
Not: Tek kullanımlık jetonu ayıklamak için gdata.auth.extract_auth_sub_token_from_url(url, rsa_key=rsa_key)
kullandığınız sürece güvenli AuthSub için de aynı işlem geçerlidir.
Not: Güvenli AuthSub kullanılırken özel anahtarınızın kendisi ağ üzerinden gönderilmez. İstemci kitaplıkları, isteği anahtarınızla imzalayarak oluşturulan benzersiz imzayı gönderir, anahtarın kendisini göndermez.
Oturum jetonunu kullanma
Oturum jetonunu, AuthSub belgelerinde açıklandığı gibi, jetonu Yetkilendirme üstbilgisine yerleştirerek sunucuya yapılan isteklerin kimliğini doğrulamak için kullanabilirsiniz.
Oturum jetonunuzu ayarladıktan sonra, jetonla ilgili herhangi bir işlem yapmanıza gerek kalmadan hizmetle etkileşim kurmak için standart Google Data API'leri istemci kitaplığı çağrılarını kullanabilirsiniz. Ayrıntılar için istemci kitaplığı belgelerine ve etkileşimde bulunduğunuz hizmet ve dil için Google Veri API'leri geliştirici kılavuzuna bakın.
Oturum jetonu hakkında bilgi alma
İstemcinizin ve sunucunun jetonun parametreleri konusunda anlaştığını test etmek istiyorsanız jetonu, jetonla ilgili bilgileri içeren bir ad-değer çiftleri grubu döndüren AuthSubTokenInfo işleyicisine iletebilirsiniz.
Java
Map<String, String> tokenInfo = AuthSubUtil.getTokenInfo(sessionToken, null);
Güvenli AuthSub kullanıyorsanız RSA özel anahtarınızı iletin:
Map<String, String> tokenInfo = AuthSubUtil.getTokenInfo(sessionToken, privateKey);
.NET
Dictionary<String, String> tokenInfo = AuthSubUtil.GetTokenInfo(sessionToken, null);
Güvenli AuthSub kullanıyorsanız RSA özel anahtarınızı iletin:
Dictionary<String, String> tokenInfo = AuthSubUtil.GetTokenInfo(sessionToken, privateKey);
PHP
$tokenInfo = Zend_Gdata_AuthSub::getAuthSubTokenInfo($sessionToken);Güvenli AuthSub kullanıyorsanız isteğin RSA özel anahtarınızla imzalanması için Zend_Gdata_HttpClient değerini iletin:
$tokenInfo = Zend_Gdata_AuthSub::getAuthSubTokenInfo($sessionToken, $client);Python
token_info = calendar_service.AuthSubTokenInfo()
Oturum jetonunu iptal etme
AuthSub oturum jetonlarının süresi dolmaz. İstemciniz, oturum jetonunu gerektiği sürece saklayabilir.
Bu nedenle, istemciniz oturum jetonunu kullanmayı bitirdiğinde AuthSub dokümanında açıklandığı gibi AuthSubRevokeToken işleyicisini kullanarak jetonu iptal edebilir.
Örneğin, jetonları geleneksel oturum benzeri bir şekilde yönetmek istiyorsanız istemciniz, kullanıcının oturumunun başında bir jeton alabilir ve kullanıcının oturumunun sonunda bu jetonu iptal edebilir.
Bir jetonu iptal etmek için her istemci kitaplığında aşağıdakileri kullanın:
Java
AuthSubUtil.revokeToken(sessionToken, null);
Güvenli AuthSub kullanıyorsanız RSA özel anahtarınızı iletin:
AuthSubUtil.revokeToken(sessionToken, privateKey);
.NET
AuthSubUtil.revokeToken(sessionToken, null);
Güvenli AuthSub kullanıyorsanız RSA özel anahtarınızı iletin:
AuthSubUtil.revokeToken(sessionToken, privateKey);
PHP
$wasRevoked = Zend_Gdata_AuthSub::AuthSubRevokeToken($sessionToken);Güvenli AuthSub kullanıyorsanız isteğin RSA özel anahtarınızla imzalanması için Zend_Gdata_HttpClient değerini iletin:
$wasRevoked = Zend_Gdata_AuthSub::AuthSubRevokeToken($sessionToken, $client);Python
calendar_service.RevokeAuthSubToken()
Ek Kaynaklar ve Örnekler
- Google Data API Tips Blog'da AuthSub örnekleri
- Python istemci kitaplığı AuthSub örneği
- Java istemci kitaplığı AuthSub örneği
- Makale: .NET İstemci Kitaplığı ile AuthSub'ı Kullanma
- Makale: JavaScript İstemci Kitaplığı ile "AuthSub" Kimlik Doğrulamayı Kullanma
Güvenli AuthSub ile kullanılmak üzere kendinden imzalı özel anahtar ve ortak sertifika oluşturma
Özel anahtar, her isteğe dahil edilmesi gereken bir imza oluşturmak için kullanılır. Sertifikaya yerleştirilmiş ortak anahtar, imzayı doğrulamak için Google tarafından kullanılır. Ortak anahtar, PEM biçiminde bir X.509 sertifikasında kodlanmış 1024 bitlik bir RSA anahtarı olmalıdır. Sertifika, kayıt sırasında Google'a gönderilmelidir.
Aşağıdaki bölümlerde, iki özel araç (OpenSSL yardımcı programı ve Java'nın keytool yardımcı programı) kullanılarak anahtar ve sertifika oluşturma örnekleri verilmektedir.
Bu örnekler Google Veri API'lerine özgü değildir. Anahtarları herhangi bir amaç için oluşturmak üzere aynı yardımcı programları kullanabilirsiniz.
Örneklerde, şirketinizin adının My_Company olduğu ve ABD'nin Kaliforniya eyaletindeki Mountain View şehrinde bulunduğu, alan adının ise example.com olduğu varsayılmaktadır.
OpenSSL kullanarak anahtar oluşturma
RSA anahtar çifti ve ilgili sertifikayı oluşturmak için aşağıdaki komutu kullanabilirsiniz:
# 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
Uyarı: -nodes parametresinin eklenmesi, koruyucu şifresi olmayan bir özel anahtar oluşturur.
Ancak, güvenliği artırmak için bu parametreyi atlamayı düşünebilirsiniz.
-sha1 parametresi, anahtarın SHA1 imzaları oluşturmak için kullanılacağını belirtir.
-subj parametresi, sertifikanın temsil ettiği uygulamanın kimliğini belirtir.
-keyout parametresi, anahtarları içerecek dosyayı belirtir.
Bu dosya hassas bilgiler içerir, korunmalı ve kimseyle paylaşılmamalıdır.
-out parametresi, PEM biçiminde sertifika içeren dosyayı belirtir
(kayıt sırasında Google'a gönderilebilir).
.NET istemcisi için anahtar oluşturma
.NET Framework, PEM biçiminde depolanan anahtarları veya sertifikaları anlamaz. Bu nedenle, .pem dosyasını oluşturduktan sonra ek bir adım uygulamanız gerekir:
openssl pkcs12 -export -in test_cert.pem -inkey myrsacert.pem -out myrsacert.pfx -name "Testing Certificate"
Bu adımda, özel anahtarınız ve sertifikanızdan bir PFX dosyası oluşturulur. Bu dosya, Google Veri API'lerine yapılan istekleri dijital olarak imzalamak için .NET istemci kitaplığına aktarılabilir.
Java istemcisi için anahtar oluşturma
Java istemcisi, PKCS#8 biçimindeki özel anahtarları kabul eder. Yukarıdaki talimatları kullanarak anahtar/sertifika oluşturduktan sonra, oluşturduğunuz .pem dosyasından bir .pk8 dosyası oluşturun:
openssl pkcs8 -in myrsakey.pem -topk8 -nocrypt -out myrsakey.pk8
Alternatif olarak, RSA anahtarları çifti ve ilgili sertifikayı oluşturmak için Java anahtar deposunu ve keytool yardımcı programını kullanabilirsiniz. Aşağıdaki komutu kullanın:
# 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
Uyarı: "changeme" iyi bir şifre değildir. Bu yalnızca bir örnektir.
-dname parametresi, sertifikanın temsil ettiği uygulamanın kimliğini belirtir. -storepass parametresi, anahtar deposunu korumak için kullanılacak şifreyi belirtir. -keypass parametresi, özel anahtarı koruyacak şifreyi belirtir.
Sertifikayı ManageDomains aracında kullanılabilecek bir dosyaya yazmak için aşağıdaki komutu kullanın:
# Output the public certificate to a file keytool -export -rfc -keystore ./Example.jks -storepass changeme \ -alias Example -file mycert.pem