Google Veri Protokolü İstemci Kitaplıklarındaki AuthSub

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:

  1. Daha yüksek güvenlik düzeyi.
  2. 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 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)

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 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)

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

Başa dön

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

Başa dön