Uyarı: Bu sayfa, Google'ın eski API'leri olan Google Veri API'leriyle ilgilidir. Bu sayfalar, çoğu yeni API'lerle değiştirilen Google Veri API'leri dizininde listelenen API'lerle ilgilidir. Belirli bir yeni API ile ilgili bilgi edinmek için yeni API'nin belgelerine bakabilirsiniz. Yeni bir API ile istekleri yetkilendirme hakkında bilgi için Google Hesaplarında Kimlik Doğrulama ve Yetkilendirme başlıklı makaleyi inceleyin.
Bu dokümanda, Google'ın Web Uygulamaları İçin AuthSub Kimlik Doğrulaması'na bağlanmak üzere Google Data API istemci kitaplıklarının nasıl kullanılacağı açıklanmaktadır.
AuthSub arayüzü, web tabanlı bir uygulamanın bir kullanıcı adına Google hizmetine erişmesine olanak tanır. Yüksek düzeyde güvenlik sağlamak için AuthSub arayüzü, uygulamanın, kullanıcının hesap giriş bilgilerini işlemeden bir kimlik doğrulama jetonu almasını sağlar.
Google Data API istemci kitaplıkları, AuthSub'ı web uygulamanızda 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 bir oturum jetonuyla değiştirme ve isteği imzalama yöntemleri vardır.
Not: JavaScript istemci kitaplığının, AuthSubJS adlı kendi AuthSub türü vardır. JavaScript uygulamalarınızda AuthSubJS aracını nasıl kullanacağınızla ilgili bilgi edinmek için JavaScript İstemci Kitaplığı ile "AuthSub" Kimlik Doğrulamasını Kullanma başlıklı makaleyi inceleyin.
Kitle
Bu belge, Google Veri API'leri istemci kitaplıklarını kullanarak web tabanlı uygulamalarının kullanıcılar adına Google hizmetlerine erişmesini isteyen programcılar için hazırlanmıştır.
Bu dokümanda, AuthSub arayüzü ve AuthSub'ın web uygulamanıza eklenmesiyle 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ı konusuna bakın.
AuthSub ve Google Veri API'lerini istemci kitaplıkları olmadan kullanma
Web uygulamanızın istemcisinin, kimlik doğrulama sistemi olarak AuthSub'ı kullanarak bir Google Veri hizmetiyle etkileşimde bulunmasını istiyorsanız bilmeniz gereken her şey Web Uygulamaları için AuthSub Kimlik Doğrulaması bölümündedir. İstemiyorsanız Google Veri API'leri istemci kitaplıklarını kullanmanız gerekmez.
Uygulamanızın, AuthSub'ı kullanarak bir kullanıcının kimliğini nasıl doğrulayabileceğine dair bir özet aşağıda verilmiştir:
Uygulamanız, uygun AuthSub URL'sini oluşturur ve daha sonra, kullanıcının giriş yapabilmesi için bu URL'ye gönderir; AuthSub sistemi, kullanıcıyı 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 bir oturum jetonuyla değiştirir; ardından uygulamanız, jetonu hizmete gönderdiği her istekle birlikte Yetkilendirme başlığında gönderir.
Google Veri API'leri istemci kitaplıkları, sizin için çeşitli ayrıntıları işleyerek bu yetkilendirme işlemini basitleştirir. Bu dokümanda bunun nasıl yapılacağı açıklanmaktadır.
AuthSub ve Google Veri API'leriyle çalışma: istemci kitaplığı örnekleri
Bu bölümde, AuthSub dokümanlarının "Working with AuthSub" (AuthSub ile Çalışma) bölümünde açıklanan adımları uygulamak için Google Veri API'leri istemci kitaplığı yöntemlerinin kullanımı ile ilgili bir örnek gösterilmektedir.
Bu örnekte AuthSub arayüzünü Google Takvim ile etkileşimde bulunan bir web uygulamasına entegre ediyoruz (örneği izlemek için Google Takvim hakkında hiçbir şey bilmeniz gerekmiyor). Örnekte, web uygulamasının example.com
adresinde barındırıldığı varsayılmıştır.
Hangi jeton türünü kullanacağınıza karar verin (session=0
veya session=1
)
Tek kullanımlık jetonlar (session=0
) veya oturum jetonları (session=1
) kullanmayı seçebilirsiniz. Bu doküman, birden fazla API isteğinde bulunacak uygulamalarda daha kullanışlı olduğundan oturum jetonlarını kullanır.
AuthSub dokümanlarında açıklandığı gibi, web uygulamanızda oturum jetonları kullanmaya karar verirseniz jeton depolama alanını kendiniz yönetmeniz gerekir. Bu doküman jeton yönetimini kapsamamaktadır. session=0
ile istenen jetonların daha sonra uzun ömürlü bir oturum jetonuna geçirilemeyeceğ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üvenlikle kayıtlı. Bu belgenin geri kalanında güvenli en son AuthSub olarak ele alınacaktır. Kayıtlı olmayan/kayıtlı modu ayarlamak güvenli AuthSub'dan daha basit olsa da Google, daha fazla güvenlik sağlamak için sizin de güvenli jetonlar kullanmanızı önerir.
Nasıl kaydolunur?
Web Tabanlı Uygulamalar için Kayıt'ı seçmeniz uygulamanıza şu avantajları sağlar:
- Daha yüksek güvenlik düzeyi.
- Google tarafından güvenilir olarak kabul edilmesi (Google Yetkilendirme sayfasında kullanıcıya herhangi bir uyarı gösterilmez).
Kayıtlı + Secure AuthSub
AuthSub'ın güvenli olmasına karar verirseniz, web uygulamanızı kaydettirmenin yanı sıra, kendinden imzalı bir RSA özel anahtarı ve herkese açık sertifika çifti de oluşturmanız gerekir. X.509 sertifikaları oluşturma örnekleri için Kayıtlı mod ile kullanılacak anahtar ve sertifikalar oluşturma bölümüne (aşağıda) göz atın.
Veri erişiminizin kapsamını belirleme
Her Google hizmeti, jetonların 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
, http://www.google.com/calendar/feeds/
olmalıdır.
Not: Daha ayrıntılı bir kısıtlamaya ihtiyaç duymuyorsanız 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 sadece tüm takvimlere/tam feed'e kısıtlar. scope=http://www.google.com/calendar/feeds/
kullanımı, Takvim'in tüm feed'lerine erişim izni verir: http://www.google.com/calendar/feeds/*.
Çok kapsamlı jetonlar
Birden çok Google Veri API'sine erişen jetonlar oluşturmak için her bir kapsamı URL kodlamalı bir alanla ayırın. Aşağıdaki örnek, hem kullanıcının Google Kişiler hem de Google Takvim verilerine erişebilecek bir jeton oluşturur.
scope=http://www.google.com/calendar/feeds/%20http://www.google.com/m8/feeds/
Tek kullanımlık kimlik doğrulama jetonu isteme
Belirli bir kullanıcı ve belirli bir hizmet için AuthSub jetonu almak üzere uygulamanızın, kullanıcıyı AuthSubRequest
hesabına yönlendirmesi gerekir. Bu işlem, kullanıcıyı Google hesabına giriş yapmasını ister.
(AuthSubRequest
URL'si hakkında daha fazla bilgi edinmek için Web Uygulamaları İçin AuthSub Kimlik Doğrulaması başlıklı makaleye bakın.)
Uygulamanızda AuthSubRequest
URL'si oluşturmak için her istemci kitaplığında 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 çeşitli şekillerde kullanabilir. En yaygın yaklaşım, kullanıcıya Google hesabınıza erişmesi için uygulamanızı yetkilendirmek üzere bir bağlantıyı izlemesi gerektiğini bildiren bir sayfa görüntülemek ve ardından istek URL'sini bağlantıya eklemektir. Örneğin, web uygulamanızda aşağıdaki dizeyi oluşturabilirsiniz:
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ının bağlantısını takip eder ve giriş yapar. Bu durumda AuthSub sistemi, sağladığınız "sonraki" URL'yi kullanarak kullanıcıyı uygulamanıza tekrar yönlendirir.
Tek kullanımlık jetonu alma
Google uygulamanıza tekrar yönlendirildiğinde jeton, sorgu parametresi olarak "sonraki" URL'sine eklenir. Yukarıdaki örneklerde, kullanıcı giriş yaptıktan sonra Google, http://www.example.com/RetrieveToken?token=DQAADKEDE
gibi bir URL'ye yönlendirme yapar.
Uygulamanız, jeton değerini URL sorgu parametresinden almalı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 yeniden yönlendirme yaptığında, uygulamanız bu URL'ye hangi kullanıcının geldiğini belirlemek 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 jetonun ayıklanması için kullanışlı 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 anAuthSubToken
orSecureAuthSubToken
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)
Güvenli AuthSub kullanıyorsanız RSA özel anahtarınızı bir SecureAuthSubToken
oluşturulacak şekilde ayarladığınızdan emin olun:
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 anAuthSubToken
orSecureAuthSubToken
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)
Oturum jetonu isteme
URL'den aldığınız jeton her zaman tek kullanımlık bir jetondur. Sonraki adım, AuthSubSessionToken
URL'sini kullanarak uzun süreli bir oturum jetonu için bu jetonu yeni sürüme geçirmektir. Bunun için
Web Uygulamaları İçin AuthSub Kimlik Doğrulaması dokümanlarında tam olarak açıklandığı şekilde işlem yapılması gerekir. Güvenli AuthSub kullanıyorsanız takas yapmadan önce RSA özel anahtarınızı ayarlamanız gerekir. Aşağıda, istemci kitaplıklarının her birini kullanan 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 RSA özel anahtarınızı null
yapıştırmak yerine exchangeForSessionToken
öğesine geçirin:
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 RSA özel anahtarınızı null
yapıştırmak yerine exchangeForSessionToken
öğesine geçirin:
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
Exchange, güvenli AuthSub için önce bir Zend_Gdata_HttpClient
ve RSA özel anahtarınızı setAuthSubPrivateKeyFile()
kullanarak 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 çıkarmak 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 bu süreç aynıdır.
Not: Güvenli AuthSub kullanırken özel anahtarınızın kendisi ağ üzerinden gönderilmez. İstemci kitaplıkları, isteği anahtarla imzalayarak değil, anahtarla imzalayarak oluşturulan benzersiz imzayı gönderir.
Oturum jetonunu kullanma
Sunucuya gönderilen isteklerin kimliğini doğrulamak için, jetonu AuthSub dokümanlarında açıklandığı şekilde Yetkilendirme başlığına yerleştirerek kullanabilirsiniz.
Oturum jetonunuzu ayarladıktan sonra, jeton hakkında düşünmek zorunda kalmadan hizmetle etkileşimde bulunmak için standart Google Veri API'leri istemci kitaplığı çağrılarını kullanabilirsiniz. Ayrıntılı bilgi için istemci kitaplığı dokümanlarına 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 sunucunuzun jetonun parametreleri konusunda hemfikir olup olmadığını test etmek isterseniz jetonu AuthSubTokenInfo
işleyicisine iletebilirsiniz. Bu işleyici, jeton hakkında bilgi içeren bir ad-değer çifti grubunu döndürür.
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
anahtarınızı 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 gereken süre boyunca saklayabilir.
Bu nedenle, istemciniz oturum jetonuyla işiniz bittiğinde, AuthSub dokümanlarında açıklandığı gibi AuthSubRevokeToken
işleyicisini kullanarak jetonu iptal edebilir.
Örneğin, jetonları geleneksel oturuma benzer bir şekilde yönetmek istiyorsanız bir kullanıcı oturumunun başında jeton alabilir ve kullanıcı oturumunun sonunda bu jetonu iptal edebilirsiniz.
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
anahtarınızı iletin:
$wasRevoked = Zend_Gdata_AuthSub::AuthSubRevokeToken($sessionToken, $client);
Python
calendar_service.RevokeAuthSubToken()
Ek Kaynaklar ve Örnekler
- Google Veri API'si İpuçları Blogu'ndaki 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ğrulamasını Kullanma
Güvenli AuthSub ile kullanılmak üzere kendinden imzalı özel anahtar ve genel 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, Google tarafından imzayı doğrulamak için kullanılır. Ortak anahtar, XEM 509 sertifikasıyla kodlanan 1024 bit RSA anahtarı olmalıdır. Sertifika, kayıt sırasında Google'a gönderilmelidir.
Aşağıdaki iki araçta anahtar ve sertifika oluşturma örnekleri verilmiştir: OpenSSL
yardımcı programı ve Java'nın keytool
yardımcı programı.
Bu örnekler Google Veri API'lerine özel değildir. Herhangi bir amaçla anahtar oluşturmak için aynı yardımcı programlardan yararlanabilirsiniz.
Örnekler, şirketinizin Şirketim_adı olduğunu ve example.com alan adıyla Mountain View, Kaliforniya, ABD'de bulunduğunu varsayar.
OpenSSL kullanarak anahtar oluşturma
Bir RSA anahtarı ve ilgili sertifika 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
parametresini eklemek, korumak için şifre olmadan bir özel anahtar oluşturur.
Ancak, daha fazla güvenlik için bu parametreyi kullanmamanız önerilir.
-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çerdiği için kimseyle paylaşılmamalıdır.
-out
parametresi, sertifikayı içerecek dosyayı belirtir. PEM biçimindedir (kayıt sırasında Google'a gönderilebilir).
.NET istemcisi için anahtar oluşturma
.NET çerçevesi, PEM biçiminde depolanan anahtarları veya sertifikaları anlamaz. Bu nedenle, .pem dosyasını oluşturduktan sonra ek bir adım yapmanız gerekir:
openssl pkcs12 -export -in test_cert.pem -inkey myrsacert.pem -out myrsacert.pfx -name "Testing Certificate"
Bu adım, özel anahtar ve sertifikanızdan bir PFX dosyası oluşturur. 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çiminde özel anahtarları kabul eder. Yukarıdaki talimatları uygulayarak bir anahtar/sertifika oluşturduktan sonra, oluşturduğunuz .pem dosyasından .pk8 dosyası oluşturun:
openssl pkcs8 -in myrsakey.pem -topk8 -nocrypt -out myrsakey.pk8
Alternatif olarak, bir RSA anahtarı 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ı korumak için kullanılacak ş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