Google ডেটা প্রোটোকল ক্লায়েন্ট লাইব্রেরিতে OAuth

সতর্কতা : এই পৃষ্ঠাটি Google-এর পুরানো API, Google Data APIs সম্পর্কে; এটি শুধুমাত্র Google Data APIs ডিরেক্টরিতে তালিকাভুক্ত APIগুলির সাথে প্রাসঙ্গিক, যার মধ্যে অনেকগুলি নতুন API দিয়ে প্রতিস্থাপিত হয়েছে৷ একটি নির্দিষ্ট নতুন API সম্পর্কে তথ্যের জন্য, নতুন API এর ডকুমেন্টেশন দেখুন। একটি নতুন API-এর সাহায্যে অনুরোধ অনুমোদনের বিষয়ে তথ্যের জন্য, Google অ্যাকাউন্ট প্রমাণীকরণ এবং অনুমোদন দেখুন।

ওয়েব অ্যাপ্লিকেশনের জন্য Google এর OAuth প্রমাণীকরণের সাথে সংযোগ করতে কীভাবে Google Data API ক্লায়েন্ট লাইব্রেরিগুলি ব্যবহার করতে হয় এই নথিটি বর্ণনা করে৷

OAuth ইন্টারফেস একটি ওয়েব-ভিত্তিক অ্যাপ্লিকেশনকে ব্যবহারকারীর হয়ে Google পরিষেবা অ্যাক্সেস করার অনুমতি দেয়। উচ্চ স্তরের নিরাপত্তা বজায় রাখতে, OAuth ব্যবহারকারীর অ্যাকাউন্ট লগইন তথ্য পরিচালনা না করেই একটি অ্যাক্সেস টোকেন পেতে অ্যাপ্লিকেশনটিকে সক্ষম করে৷

Google ডেটা API ক্লায়েন্ট লাইব্রেরিগুলি আপনাকে আপনার ওয়েব অ্যাপ্লিকেশনে OAuth ব্যবহার করতে সাহায্য করার পদ্ধতিগুলি প্রদান করে৷ বিশেষত, একটি অনুরোধ টোকেন অর্জন, অনুরোধ টোকেন অনুমোদন এবং অ্যাক্সেস টোকেনের জন্য অনুমোদিত অনুরোধ টোকেন বিনিময় করার পদ্ধতি রয়েছে৷ Google ডেটা পরিষেবাতে অনুরোধ করার সময় লাইব্রেরিগুলি প্রয়োজনীয় সাইনিং অ্যালগরিদমগুলি পরিচালনা করে।

শ্রোতা

এই দস্তাবেজটি এমন প্রোগ্রামারদের উদ্দেশ্যে যারা তাদের ওয়েব-ভিত্তিক অ্যাপ্লিকেশনগুলিকে Google ডেটা APIs ক্লায়েন্ট লাইব্রেরি ব্যবহার করে ব্যবহারকারীদের পক্ষ থেকে Google পরিষেবাগুলি অ্যাক্সেস করতে চান৷

এই নথিটি অনুমান করে যে আপনি OAuth ইন্টারফেস এবং OAuth আপনার ওয়েব অ্যাপ্লিকেশনে অন্তর্ভুক্ত করার সাধারণ প্রক্রিয়ার সাথে পরিচিত৷ OAuth-এর প্রোটোকলের সম্পূর্ণ বিবরণের জন্য, ওয়েব অ্যাপ্লিকেশনের জন্য OAuth প্রমাণীকরণ বা oauth.net- এ অফিসিয়াল স্পেসিফিকেশন দেখুন।

ক্লায়েন্ট লাইব্রেরি ছাড়া 3-লেগড OAuth এবং Google ডেটা API ব্যবহার করা

আপনি যদি চান আপনার ওয়েব অ্যাপ্লিকেশন একটি অনুমোদন পদ্ধতি হিসাবে OAuth ব্যবহার করে একটি Google ডেটা পরিষেবার সাথে ইন্টারঅ্যাক্ট করুক, তাহলে আপনার যা কিছু জানা দরকার তা হল ওয়েব অ্যাপ্লিকেশনের জন্য OAuth প্রমাণীকরণে । আপনি যদি না চান তাহলে Google Data APIs ক্লায়েন্ট লাইব্রেরি ব্যবহার করার দরকার নেই।

OAuth ব্যবহার করে আপনার অ্যাপ্লিকেশন কীভাবে একজন ব্যবহারকারীকে প্রমাণীকরণ করতে পারে তার একটি রূপরেখা এখানে রয়েছে:

  1. আপনার আবেদনটি OAuthRequestToken এন্ডপয়েন্ট থেকে একটি প্রাথমিক OAuth অনুরোধ টোকেন আনার জন্য একটি স্বাক্ষরিত অনুরোধ করে।
  2. অনুরোধ টোকেন অনুমোদন করতে আপনার অ্যাপ্লিকেশন ব্যবহারকারীকে উপযুক্ত OAuthAuthorizeToken URL-এ পুনঃনির্দেশ করে।
  3. অ্যাক্সেস মঞ্জুর করার পরে, ব্যবহারকারীকে আপনার অ্যাপ্লিকেশনে ( oauth_callback url) পুনরায় নির্দেশিত করা হয়
  4. আপনার অ্যাপ্লিকেশনটি OAuthGetAccessToken এন্ডপয়েন্ট ব্যবহার করে একটি অ্যাক্সেস টোকেনে অনুমোদিত অনুরোধ টোকেন আপগ্রেড করার জন্য একটি স্বাক্ষরিত অনুরোধ পাঠায়।

Google Data APIs ক্লায়েন্ট লাইব্রেরিগুলি আপনার জন্য বিভিন্ন বিবরণ পরিচালনা করে এই অনুমোদন প্রক্রিয়াটিকে সহজ করে। এই নথি ব্যাখ্যা করে কিভাবে.

আপনার ওয়েব অ্যাপ্লিকেশন নিবন্ধন

OAuth এর জন্য প্রয়োজন যে সমস্ত API কল ডিজিটালভাবে স্বাক্ষরিত হবে। Google HMAC-SHA1 এবং RSA-SHA1 স্বাক্ষর পদ্ধতি সমর্থন করে৷ অনুরোধে স্বাক্ষর করার জন্য, আপনার আবেদনটি প্রথমে Google-এর সাথে নিবন্ধন করতে হবে। একবার আপনি নিবন্ধিত হয়ে গেলে, Google আপনাকে একটি ভোক্তা কী (এবং HMAC-SHA1 এর সাথে ব্যবহারের জন্য গোপন), এবং একটি সর্বজনীন শংসাপত্র আপলোড করার জায়গা প্রদান করবে।

1. আপনার ডোমেন নিবন্ধন

অনুগ্রহ করে ওয়েব-ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য নিবন্ধনে বর্ণিত ধাপগুলি অনুসরণ করুন৷

2. একটি ব্যক্তিগত কী/সর্বজনীন শংসাপত্র জোড়া তৈরি করা (ঐচ্ছিক)

আপনি যদি oauth_signature_method হিসাবে RSA-SHA1 ব্যবহার করতে চান, তাহলে আপনাকে একটি স্ব-স্বাক্ষরকারী RSA ব্যক্তিগত কী এবং সর্বজনীন শংসাপত্র জোড়া তৈরি করতে হবে। এটি কীভাবে করবেন তার উদাহরণের জন্য একটি স্ব-স্বাক্ষরকারী ব্যক্তিগত কী এবং সর্বজনীন শংসাপত্র (নীচে) তৈরি করা দেখুন।

3-লেগড OAuth এবং Google ডেটা API-এর সাথে কাজ করা: ক্লায়েন্ট লাইব্রেরির উদাহরণ

নিম্নলিখিত বিভাগগুলি OAuth ডকুমেন্টেশনের " OAuth এর সাথে কাজ করা " বিভাগে বর্ণিত পদক্ষেপগুলি অনুসরণ করতে Google ডেটা APIs ক্লায়েন্ট লাইব্রেরি পদ্ধতিগুলি ব্যবহার করার উদাহরণগুলি দেখায়৷ এই নথির সমস্ত উদাহরণ অনুমান করে যে আপনার অ্যাপ্লিকেশন হোস্ট ডোমেন হল example.com

আপনার ডেটা অ্যাক্সেসের সুযোগ নির্ধারণ করা

প্রতিটি Google পরিষেবা একটি scope মান নির্ধারণ করে যা ব্যবহারকারীর ডেটাতে একটি টোকেনের অ্যাক্সেস নির্ধারণ করে। উপলব্ধ সুযোগের মানগুলি Google ডেটা FAQ- এ তালিকাভুক্ত করা হয়েছে। উদাহরণ স্বরূপ, ডকুমেন্ট লিস্ট API ব্যবহার করতে, এফএকিউ- তে তালিকাভুক্ত হিসাবে https://docs.google.com/feeds/ scope সেট করুন।

দ্রষ্টব্য : আপনার প্রয়োজনীয় অ্যাক্সেসের অনুমতি দেয় এমন সংকীর্ণ URL-এ scope মান সেট করুন। এটি দুর্ঘটনাবশত ব্যক্তিগত ডেটা প্রাপ্ত এবং ফাঁস হওয়ার সম্ভাবনা হ্রাস করে। উদাহরণস্বরূপ, আপনি যদি বর্তমান ব্যবহারকারীর ব্যক্তিগত নথি তালিকা ফিড অ্যাক্সেস করতে চান, https://docs.google.com/feeds/default/private/full এর পরিবর্তে একটি বৃহত্তর সুযোগ ব্যবহার করুন যেমন https://docs.google.com/feeds/ , যা সমস্ত ডকুমেন্ট লিস্ট ফিডে অ্যাক্সেস প্রদান করে।

মাল্টি-স্কোপড টোকেন

একাধিক Google ডেটা API অ্যাক্সেস করে এমন টোকেন তৈরি করতে, প্রতিটি স্কোপকে একটি স্পেস অক্ষর দিয়ে আলাদা করুন। নীচের উদাহরণটি ব্যবহারকারীর Google নথি এবং Google ক্যালেন্ডার ডেটা উভয়ের অ্যাক্সেস সহ একটি টোকেন তৈরি করে৷

scope=https://www.google.com/calendar/feeds/ https://docs.google.com/feeds/
URL-এনকোডিং

কোলন, স্ল্যাশ এবং স্পেস সহ URL-এ উপস্থিত নন-ASCII অক্ষরগুলিকে HTTP-এর মাধ্যমে প্রেরণ করার জন্য URL-এনকোড করা আবশ্যক৷ Google Data API ক্লায়েন্ট লাইব্রেরিগুলি স্বয়ংক্রিয়ভাবে আপনার জন্য URL-এনকোড প্যারামিটার, যাতে আপনি প্যারামিটারগুলিতে মান নির্ধারণ করার সময় নন-URL-এনকোডেড স্ট্রিংগুলি ব্যবহার করতে পারেন৷ উদাহরণস্বরূপ, আপনি আপনার কোডে নিম্নলিখিত অ্যাসাইনমেন্ট করতে পারেন:

scope=https://www.google.com/calendar/feeds/ https://docs.google.com/feeds/

আপনি যখন ক্লায়েন্ট লাইব্রেরিতে কল করেন, তখন scope প্যারামিটারটি স্বয়ংক্রিয়ভাবে নিম্নলিখিত মানটিতে ইউআরএল-এনকোড হয়ে যায়:
https%3a%2f%2fwww.google.com%2fcalendar%2ffeeds%2f+https%3a%2f%2fdocs.google.com%2ffeeds%2f

একটি অনুরোধ টোকেন আনা হচ্ছে

জাভা

HMAC-SHA1 এর জন্য, অনুমোদন পৃষ্ঠা থেকে ফিরে আসা একটি OAuth টোকেন অবজেক্ট তৈরি করার জন্য আপনাকে টোকেন গোপন (প্রতিক্রিয়ায় প্রাপ্ত) বজায় রাখার জন্য কিছু উপায় প্রয়োজন। এটি করতে, একটি সেশন ভেরিয়েবল বা কুকি সেট করুন।

import com.google.gdata.client.docs.*;
import com.google.gdata.client.authn.oauth.*;

String CONSUMER_KEY = "example.com";
String CONSUMER_SECRET = "abc123doremi";

GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
oauthParameters.setScope("https://docs.google.com/feeds/");
oauthParameters.setOAuthCallback("http://www.example.com/UpgradeToken.jsp");

GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(new OAuthHmacSha1Signer());
oauthHelper.getUnauthorizedRequestToken(oauthParameters);

RSA-SHA1 ব্যবহার করে, oauth_token_secret অব্যবহৃত তাই টোকেন গোপন রাখার কোন প্রয়োজন নেই।

import com.google.gdata.client.docs.*;
import com.google.gdata.client.authn.oauth.*;

String CONSUMER_KEY = "example.com";

GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setScope("https://docs.google.com/feeds/");
oauthParameters.setOAuthCallback("http://www.example.com/UpgradeToken.jsp");

PrivateKey privKey = getPrivateKey("/path/to/your/rsakey.pk8");

GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(new OAuthRsaSha1Signer(privKey));
oauthHelper.getUnauthorizedRequestToken(oauthParameters);

...

public static PrivateKey getPrivateKey(String privKeyFileName) {
  File privKeyFile = new File(privKeyFileName);
  FileInputStream fis = new FileInputStream(privKeyFile);
  DataInputStream dis  = new DataInputStream(fis);

  byte[] privKeyBytes = new byte[(int) privKeyFile.length()];
  dis.read(privKeyBytes);
  dis.close();
  fis.close();

  String BEGIN = "-----BEGIN PRIVATE KEY-----";
  String END = "-----END PRIVATE KEY-----";
  String str = new String(privKeyBytes);
  if (str.contains(BEGIN) && str.contains(END)) {
    str = str.substring(BEGIN.length(), str.lastIndexOf(END));
  }

  KeyFactory fac = KeyFactory.getInstance("RSA");
  EncodedKeySpec privKeySpec = new PKCS8EncodedKeySpec(Base64.decode(str));
  return fac.generatePrivate(privKeySpec);
}

পিএইচপি

স্বাক্ষর পদ্ধতি হিসাবে HMAC-SHA1 ব্যবহার করা:

require_once 'Zend/Oauth/Consumer.php';

session_start();

$CONSUMER_KEY = 'example.com';
$CONSUMER_SECRET = 'abc123doremi';

// Multi-scoped token.
$SCOPES = array(
  'https://docs.google.com/feeds/',
  'https://spreadsheets.google.com/feeds/'
);

$oauthOptions = array(
  'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,
  'version' => '1.0',
  'consumerKey' => $CONSUMER_KEY,
  'consumerSecret' => $CONSUMER_SECRET,
  'signatureMethod' => 'HMAC-SHA1',
  'callbackUrl' => 'http://myapp.example.com/access_token.php',
  'requestTokenUrl' => 'https://www.google.com/accounts/OAuthGetRequestToken',
  'userAuthorizationUrl' => 'https://www.google.com/accounts/OAuthAuthorizeToken',
  'accessTokenUrl' => 'https://www.google.com/accounts/OAuthGetAccessToken'
);

$consumer = new Zend_Oauth_Consumer($oauthOptions);

// When using HMAC-SHA1, you need to persist the request token in some way.
// This is because you'll need the request token's token secret when upgrading
// to an access token later on. The example below saves the token object as a session variable.
if (!isset($_SESSION['ACCESS_TOKEN'])) {
  $_SESSION['REQUEST_TOKEN'] = serialize($consumer->getRequestToken(array('scope' => implode(' ', $SCOPES))));
}

স্বাক্ষর পদ্ধতি হিসাবে RSA-SHA1 ব্যবহার করা:

require_once 'Zend/Crypt/Rsa/Key/Private.php';
require_once 'Zend/Oauth/Consumer.php';

session_start();

$CONSUMER_KEY = 'example.com';
$SCOPE = 'https://docs.google.com/feeds/';

$oauthOptions = array(
  'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,
  'version' => '1.0',
  'consumerKey' => $CONSUMER_KEY,
  'consumerSecret' => new Zend_Crypt_Rsa_Key_Private(file_get_contents(realpath('/path/to/yourRSAPrivateKey.pem'))),
  'signatureMethod' => 'RSA-SHA1',
  'callbackUrl' => 'http://myapp.example.com/access_token.php',
  'requestTokenUrl' => 'https://www.google.com/accounts/OAuthGetRequestToken',
  'userAuthorizationUrl' => 'https://www.google.com/accounts/OAuthAuthorizeToken',
  'accessTokenUrl' => 'https://www.google.com/accounts/OAuthGetAccessToken'
);

$consumer = new Zend_Oauth_Consumer($oauthOptions);

if (!isset($_SESSION['ACCESS_TOKEN'])) {
  $_SESSION['REQUEST_TOKEN'] = serialize($consumer->getRequestToken(array('scope' => $SCOPE)));
}

পাইথন

স্বাক্ষর পদ্ধতি হিসাবে HMAC-SHA1 ব্যবহার করা:

আপনি যদি GDClient এর উপর ভিত্তি করে নতুন v2.0+ ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

import gdata.gauth
import gdata.docs.client

CONSUMER_KEY = 'example.com'
CONSUMER_SECRET = 'abc123doremi'
SCOPES = ['https://docs.google.com/feeds/', 'https://www.google.com/calendar/feeds/']  # example of a multi-scoped token

client = gdata.docs.client.DocsClient(source='yourCompany-YourAppName-v1')

oauth_callback_url = 'http://%s/get_access_token' % self.request.host
request_token = client.GetOAuthToken(
    SCOPES, oauth_callback_url, CONSUMER_KEY, consumer_secret=CONSUMER_SECRET)

# When using HMAC-SHA1, you need to persist the request_token in some way.
# You'll need the token secret when upgrading to an access token later on.
# In Google App Engine, you can use the AeSave helper:
# gdata.gauth.AeSave(request_token, 'myKey')

স্বাক্ষর পদ্ধতি হিসাবে RSA-SHA1 ব্যবহার করা:

...

f = open('/path/to/yourRSAPrivateKey.pem')
RSA_KEY = f.read()
f.close()

request_token = client.GetOAuthToken(SCOPES, oauth_callback_url, CONSUMER_KEY, rsa_private_key=RSA_KEY)

বিকল্পভাবে, আপনি যদি GDataService-এর উপর ভিত্তি করে পুরানো v1.0 ক্লাসগুলি ব্যবহার করেন, তাহলে কলগুলি কিছুটা আলাদা:

import gdata.auth
import gdata.docs.service

CONSUMER_KEY = 'example.com'
CONSUMER_SECRET = 'abc123doremi'

client = gdata.docs.service.DocsService(source='yourCompany-YourAppName-v1')
client.SetOAuthInputParameters(gdata.auth.OAuthSignatureMethod.HMAC_SHA1, CONSUMER_KEY, consumer_secret=CONSUMER_SECRET)

req_token = client.FetchOAuthRequestToken()
client.SetOAuthToken(req_token)

স্বাক্ষর পদ্ধতি হিসাবে RSA-SHA1 ব্যবহার করা:

...

f = open('/path/to/yourRSAPrivateKey.pem')
RSA_KEY = f.read()
f.close()

client = gdata.docs.service.DocsService(source='yourCompany-YourAppName-v1')
client.SetOAuthInputParameters(gdata.auth.OAuthSignatureMethod.RSA_SHA1, CONSUMER_KEY, rsa_key=RSA_KEY)

SCOPES = ['https://docs.google.com/feeds/', 'https://www.google.com/calendar/feeds/']  # example of a multi-scoped token
req_token = client.FetchOAuthRequestToken(scopes=SCOPES)
client.SetOAuthToken(req_token)

.নেট

স্বাক্ষর পদ্ধতি হিসাবে HMAC-SHA1 ব্যবহার করা:

using Google.GData.Client;

string CONSUMER_KEY = "example.com";
string CONSUMER_SECRET = "abc123doremi";

// Multi-scoped token.
string SCOPE = "https://www.google.com/calendar/feeds/ https://www.google.com/m8/feeds/";

OAuthParameters parameters = new OAuthParameters() {
  ConsumerKey = CONSUMER_KEY,
  ConsumerSecret = CONSUMER_SECRET,
  Scope = SCOPE,
  Callback = "http://myapp.example.com/access_token",
  SignatureMethod = "HMAC-SHA1"
}

OAuthUtil.GetUnauthorizedRequestToken(parameters);

স্বাক্ষর পদ্ধতি হিসাবে RSA-SHA1 ব্যবহার করা:

RSA-SHA1 is not supported yet.

একটি অনুরোধ টোকেন অনুমোদন

একটি অনুরোধ টোকেন অনুমোদন করার জন্য, আপনার অ্যাপ্লিকেশনটিকে অবশ্যই ব্যবহারকারীকে OAuthAuthorizeToken URL-এ পুনঃনির্দেশিত করতে হবে, যা তাদের তাদের Google অ্যাকাউন্টে লগ ইন করতে অনুরোধ করে। OAuthAuthorizeToken URL সম্পর্কে আরও তথ্যের জন্য, ওয়েব অ্যাপ্লিকেশনগুলির জন্য সম্পূর্ণ OAuth প্রমাণীকরণ দেখুন।

আপনার অ্যাপ্লিকেশনে OAuthAuthorizeToken URL তৈরি করতে, প্রতিটি ক্লায়েন্ট লাইব্রেরির জন্য নিম্নলিখিত ব্যবহার করুন। দ্রষ্টব্য, এই নমুনাগুলি পূর্ববর্তী উদাহরণগুলির উপর ভিত্তি করে তৈরি করা হয়েছে।

অনুমোদন পৃষ্ঠার URL তৈরি করার পরে, আপনার অ্যাপ্লিকেশনটি ব্যবহারকারীকে OAuthAuthorizeToken হ্যান্ডলারে পাঠানোর জন্য বিভিন্ন উপায়ে এটি ব্যবহার করতে পারে। সবচেয়ে সাধারণ পদ্ধতি হল ব্যবহারকারীকে পুনঃনির্দেশ করা বা সেই পৃষ্ঠার একটি লিঙ্ক প্রদর্শন করা।

জাভা

HMAC-SHA1 এর জন্য:

String approvalPageUrl = oauthHelper.createUserAuthorizationUrl(oauthParameters);
System.out.println(approvalPageUrl);

RSA-SHA1 এর জন্য:

String approvalPageUrl = oauthHelper.createUserAuthorizationUrl(oauthParameters);
System.out.println(approvalPageUrl);

পিএইচপি

// If on a G Suite domain, use your domain for the hd param (e.g. 'example.com').
$approvalUrl = $consumer->getRedirectUrl(array('hd' => 'default'));
echo "<a href=\"$approvalUrl\">Grant access</a>";

বিকল্পভাবে, আপনি কেবল অনুমোদন URL এ পুনঃনির্দেশ করতে পারেন:

// If on a G Suite domain, use your domain for the hd param (e.g. 'example.com').
$consumer->redirect(array('hd' => 'default'));

পাইথন

আপনি যদি GDClient এর উপর ভিত্তি করে নতুন v2.0+ ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

# req_token is from previous call to client.GetOAuthToken()
domain = None  # If on a G Suite domain, use your domain (e.g. 'example.com').
self.redirect(request_token.generate_authorization_url(google_apps_domain=domain))

আপনি যদি GDataService এর উপর ভিত্তি করে পুরানো v1.0 ক্লাসগুলি ব্যবহার করেন তবে প্রক্রিয়াটি একটু ভিন্ন।

# req_token is from previous call to client.FetchOAuthRequestToken()
oauth_callback_url = 'http://%s/get_access_token' % self.request.host
self.redirect(client.GenerateOAuthAuthorizationURL(callback_url=oauth_callback_url))

.নেট

string authorizationUrl = OAuthUtil.CreateUserAuthorizationUrl(parameters);
Console.WriteLine(authorizationUrl);

কলব্যাক URL থেকে টোকেন বের করা হচ্ছে

যখন Google আপনার অ্যাপ্লিকেশনে পুনঃনির্দেশ করে, তখন oauth_token একটি ক্যোয়ারী প্যারামিটার হিসাবে " oauth_callback_url " URL এর সাথে যুক্ত হয়৷ আপনার অ্যাপ্লিকেশানটিকে তার URL ক্যোয়ারী প্যারামিটার থেকে টোকেন মান বের করা উচিত এবং oauth পরামিতিগুলি পুনরায় স্থাপন করা উচিত।

ক্লায়েন্ট লাইব্রেরিগুলি oauth_token এক্সট্র্যাক্ট করার জন্য সুবিধার পদ্ধতি প্রদান করে। এই নমুনাগুলি পূর্ববর্তী উদাহরণগুলির উপর ভিত্তি করে তৈরি করা হয়েছে।

জাভা

আপনি যদি কলব্যাক ইউআরএলে টোকেন সিক্রেট বজায় রাখা বেছে নেন ( HMAC-SHA1 ব্যবহার করার সময়):

GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);

GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(new OAuthHmacSha1Signer());
oauthHelper.getOAuthParametersFromCallback(request.getQueryString(), oauthParameters);

RSA-SHA1 এর সাথে একমাত্র পার্থক্য হল স্বাক্ষর করার পদ্ধতি:

GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);

PrivateKey privKey = getPrivateKey("/path/to/your/rsakey.pk8");

GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(new OAuthRsaSha1Signer(privKey));
oauthHelper.getOAuthParametersFromCallback(request.getQueryString(), oauthParameters);

পিএইচপি

পিএইচপি লাইব্রেরি ব্যবহার করার সময় এই পদক্ষেপটি প্রয়োজনীয় নয়।

পাইথন

আপনি যদি GDClient এর উপর ভিত্তি করে নতুন v2.0+ ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

# Recall request_token. In Google App Engine, use AeLoad():
# saved_request_token = gdata.gauth.AeLoad('myKey')

request_token = gdata.gauth.AuthorizeRequestToken(saved_request_token, self.request.uri)

আপনি যদি GDataService এর উপর ভিত্তি করে পুরানো v1.0 ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

oauth_token = gdata.auth.OAuthTokenFromUrl(self.request.uri)
if oauth_token:
  oauth_token.secret = # TODO: recall saved request_token and set the token secret here.
  oauth_token.oauth_input_params = gdata.auth.OAuthInputParams(
      gdata.auth.OAuthSignatureMethod.HMAC_SHA1, CONSUMER_KEY, consumer_secret=CONSUMER_SECRET)
 client.SetOAuthToken(oauth_token)
else:
  print 'No oauth_token found in the URL'

প্রক্রিয়াটি RSA-SHA1 এর জন্য অনুরূপ, কিন্তু টোকেন গোপন ছাড়া:

oauth_token = gdata.auth.OAuthTokenFromUrl(self.request.uri)
if oauth_token:
  oauth_token.oauth_input_params = gdata.auth.OAuthInputParams(
      gdata.auth.OAuthSignatureMethod.RSA_SHA1, CONSUMER_KEY, rsa_key=RSA_KEY)
 client.SetOAuthToken(oauth_token)
else:
  print 'No oauth_token found in the URL'

.নেট

আপনি যদি কলব্যাক URL-এ টোকেন গোপনীয়তা বজায় রাখার জন্য বেছে নেন:

OAuthUtil.UpdateOAuthParametersFromCallback(url, parameters);

একটি অ্যাক্সেস টোকেনে আপগ্রেড করা হচ্ছে

OAuth টোকেন নৃত্যের শেষ ধাপ হল OAuthGetAccessToken URL ব্যবহার করে অনুমোদিত অনুরোধ টোকেনকে একটি দীর্ঘস্থায়ী অ্যাক্সেস টোকেনে আপগ্রেড করা, যেমনটি ওয়েব অ্যাপ্লিকেশন ডকুমেন্টেশনের জন্য সম্পূর্ণ OAuth প্রমাণীকরণে বর্ণিত হয়েছে।

এখানে প্রতিটি ক্লায়েন্ট লাইব্রেরি ব্যবহার করে কিছু উদাহরণ রয়েছে:

জাভা

String accessToken = oauthHelper.getAccessToken(oauthParameters);
// You can also pull the OAuth token string from the oauthParameters:
// String accessToken = oauthParameters.getOAuthToken();
System.out.println("OAuth Access Token: " + accessToken);

String accessTokenSecret = oauthParameters.getOAuthTokenSecret();
System.out.println("OAuth Access Token's Secret: " + accessTokenSecret);

পিএইচপি

if (!isset($_SESSION['ACCESS_TOKEN'])) {
  if (!empty($_GET) && isset($_SESSION['REQUEST_TOKEN'])) {
    $_SESSION['ACCESS_TOKEN'] = serialize($consumer->getAccessToken($_GET, unserialize($_SESSION['REQUEST_TOKEN'])));
  }
}

পাইথন

আপনি যদি GDClient এর উপর ভিত্তি করে নতুন v2.0+ ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

# Upgrade the token and save in the user's datastore
access_token = client.GetAccessToken(request_token)

# If you're using Google App Engine, you can call the AeSave() method to save
# the access token under the current logged in user's account.
#gdata.gauth.AeSave(access_token, token_key)

আপনি যদি GDataService এর উপর ভিত্তি করে পুরানো v1.0 ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

access_token = client.UpgradeToOAuthAccessToken()  # calls SetOAuthToken() for you

আপনি যদি অ্যাপ ইঞ্জিনে gdata.gauth.AeSave() ব্যবহার করেন, তাহলে টোকেন এবং টোকেন গোপন বর্তমান লগ ইন করা ব্যবহারকারীর অধীনে আপনার জন্য সংরক্ষণ করা হবে।

.নেট

OAuthUtil.GetAccessToken(parameters);

// If you want to extract the OAuth Token/TokenSecret from the OAuthParameters instance:
string accessToken = parameter.Token;
Console.WriteLine("OAuth Access Token: " + accessToken);

string accessTokenSecret = parameter.TokenSecret;
Console.WriteLine("OAuth Access Token's Secret: " + accessTokenSecret);

দ্রষ্টব্য : আপনি যদি HMAC-SHA1 ব্যবহার করে থাকেন, তাহলে আপনার ডাটাবেসে টোকেন মানের পাশাপাশি অ্যাক্সেস টোকেনের টোকেন গোপনীয়তা সংরক্ষণ করতে ভুলবেন না, অন্যথায় আপনি পরবর্তী ব্যবহারের জন্য ওউথ প্যারামিটারগুলিকে সঠিকভাবে পুনর্গঠন করতে পারবেন না।

একটি অ্যাক্সেস টোকেন ব্যবহার করে

আপনি একটি অ্যাক্সেস টোকেন পাওয়ার পরে, পরিষেবার সাথে ইন্টারঅ্যাক্ট করতে স্ট্যান্ডার্ড Google ডেটা API ক্লায়েন্ট লাইব্রেরি কলগুলি ব্যবহার করুন৷ লাইব্রেরি অনুরোধে স্বাক্ষর করার এবং আপনার জন্য সঠিক অনুমোদন শিরোনাম সহ যত্ন নেবে। সাধারণত, আপনি একটি কুকি বা ডাটাবেস থেকে ব্যবহারকারীর টোকেন প্রত্যাহার করবেন। এই উদাহরণগুলি প্রদর্শন করে যে কীভাবে ওউথ প্যারামিটারগুলি পুনর্গঠন করা যায় এবং একটি ক্লায়েন্ট লাইব্রেরি কল করা যায়।

জাভা

আপনি যদি HMAC-SHA1 ব্যবহার করেন:

  GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
  oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
  oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
  oauthParameters.setOAuthToken(ACCESS_TOKEN);
  oauthParameters.setOAuthTokenSecret(TOKEN_SECRET);

  DocsService client = new DocsService("yourCompany-YourAppName-v1");
  client.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());

  URL feedUrl = new URL("https://docs.google.com/feeds/default/private/full");
  DocumentListFeed resultFeed = client.getFeed(feedUrl, DocumentListFeed.class);
  for (DocumentListEntry entry : resultFeed.getEntries()) {
    System.out.println(entry.getTitle().getPlainText());
  }
  

RSA-SHA1 এর সাথে পার্থক্য হল যে আপনাকে অ্যাক্সেস টোকেনের গোপনীয়তা সেট করতে হবে না এবং স্বাক্ষরকারী বস্তুটি তৈরি করা আলাদা:

  GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
  oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
  oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
  oauthParameters.setOAuthToken(ACCESS_TOKEN);

  PrivateKey privKey = getPrivateKey("/path/to/your/rsakey.pk8");  // See above for the defintion of getPrivateKey()

  DocsService client = new DocsService("yourCompany-YourAppName-v1");
  client.setOAuthCredentials(oauthParameters, new OAuthRsaSha1Signer(privKey));

  URL feedUrl = new URL("https://docs.google.com/feeds/default/private/full");
  DocumentListFeed resultFeed = client.getFeed(feedUrl, DocumentListFeed.class);
  for (DocumentListEntry entry : resultFeed.getEntries()) {
    System.out.println(entry.getTitle().getPlainText());
  }
  

পিএইচপি

require_once 'Zend/Gdata/Docs.php';

if (isset($_SESSION['ACCESS_TOKEN'])) {
  $accessToken = unserialize($_SESSION['ACCESS_TOKEN']);
} else {
  exit;
}


/*  Or, you could set an existing token (say one stored from your database). For HMAC-SHA1:
$accessToken = new Zend_Oauth_Token_Access();
$accessToken->setToken('1/AQfoI-qJDqkvvkf216Gc2g');
$accessToken->setTokenSecret('2c26GLW250tZiQ');
*/

$httpClient = $accessToken->getHttpClient($oauthOptions);
$client = new Zend_Gdata_Docs($httpClient, "yourCompany-YourAppName-v1");

// Retrieve user's list of Google Docs
$feed = $client->getDocumentListFeed();
foreach ($feed->entries as $entry) {
  echo "$entry->title\n";
}

পাইথন

এই স্নিপেটটি অনুমান করে যে আপনি ইতিমধ্যেই একটি অ্যাক্সেস টোকেন ( HMAC-SHA1 ব্যবহার করে) নিয়ে এসেছেন এবং পরবর্তীতে ব্যবহারের জন্য সেই টোকেন কী/গোপনকে স্মরণ করছেন৷

আপনি যদি GDClient এর উপর ভিত্তি করে নতুন v2.0+ ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

client = gdata.docs.client.DocsClient(source='yourCo-yourAppName-v1')
client.auth_token = gdata.gauth.OAuthHmacToken(CONSUMER_KEY, CONSUMER_SECRET, TOKEN,
                                               TOKEN_SECRET, gdata.gauth.ACCESS_TOKEN)
feed = client.GetDocList()
for entry in feed.entry:
  print entry.title.text

আপনি যদি GDataService এর উপর ভিত্তি করে পুরানো v1.0 ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

client = gdata.docs.service.DocsService(source='yourCompany-YourAppName-v1')
client.SetOAuthInputParameters(SIG_METHOD, CONSUMER_KEY, consumer_secret=CONSUMER_SECRET)

# the token key and secret should be recalled from your database
client.SetOAuthToken(gdata.auth.OAuthToken(key=TOKEN, secret=TOKEN_SECRET))

feed = client.GetDocumentListFeed()
for entry in feed.entry:
  print entry.title.text

.নেট

আপনি যদি HMAC-SHA1 ব্যবহার করেন:

OAuthParameters parameters = new OAuthParameters() {
  ConsumerKey = CONSUMER_KEY,
  ConsumerSecret = CONSUMER_SECRET,
  Token = ACCESS_TOKEN,
  TokenSecret = TOKEN_SECRET
}

GOAuthRequestFactory requestFactory = new GOAuthRequestFactory("writely", APPLICATION_NAME, parameters);

DocsService service = new DocsService(APPLICATION_NAME);
service.RequestFactory = requestFactory;

DocumentsListQuery query = new DocumentsListQuery();
DocumentsFeed feed = service.Query(query);
foreach (DocumentEntry entry in feed.Entries) {
  Console.WriteLine(entry.Title.Text);
}

RSA-SHA1 এর সাথে পার্থক্য হল যে আপনাকে অ্যাক্সেস টোকেনের গোপনীয়তা সেট করতে হবে না এবং স্বাক্ষরকারী বস্তুটি তৈরি করা আলাদা:

RSA-SHA1 is not supported yet.

অতিরিক্ত 3-লেগড OAuth সম্পদ এবং নমুনা

উপরে ফিরে যাও

2 পায়ে OAuth

2 লেগড OAuth বিশ্বস্ত অ্যাপ্লিকেশনগুলিকে তাদের সরাসরি জড়িত ছাড়াই ব্যবহারকারীদের Google ডেটা অ্যাক্সেস করার অনুমতি দেয়৷ দুটি কী গ্রুপ দুই পায়ের OAuth ব্যবহার করতে পারে:

G Suite ডোমেন অ্যাডমিনিস্ট্রেটর: অ্যাডমিনিস্ট্রেটররা স্ক্রিপ্ট এবং কাস্টম অ্যাপ্লিকেশন তৈরি করতে পারে যা Google Data API-এর মাধ্যমে তাদের ডোমেনের জন্য ব্যবহারকারীর ডেটা পরিচালনা করে। আপনার G Suite ডোমেনের সাথে সম্পর্কিত কী এবং গোপনীয়তা পরিচালনা করা এবং বিশ্বব্যাপী অ্যাক্সেস নিয়ন্ত্রণ প্রদান সম্পর্কে জানতে, "OAuth কী এবং গোপনীয়তা পরিচালনা করা" দেখুন।

থার্ড-পার্টি সফ্টওয়্যার বিক্রেতারা: বিক্রেতারা G Suite-এর সাথে একীভূত করতে দুই পায়ের OAuth ব্যবহার করে এমন অ্যাপ্লিকেশন অফার করতে পারে। ম্যানেজ API ক্লায়েন্ট পৃষ্ঠায় বা G Suite মার্কেটপ্লেস থেকে ইনস্টল করে 3য় পক্ষের অ্যাপ্লিকেশনগুলির অ্যাক্সেস মঞ্জুর করা যেতে পারে।

স্বাভাবিক অনুমোদনের প্রবাহ অনুসারে একটি অ্যাক্সেস টোকেনের প্রয়োজন নেই (3-লেগড OAuth হিসাবেও উল্লেখ করা হয়)।

নিম্নলিখিত ক্লায়েন্ট লাইব্রেরি নমুনাগুলি প্রদর্শন করে যে কীভাবে আপনার ক্লায়েন্টকে HMAC-SHA1 ব্যবহার করে 2 Legged OAuth ব্যবহার করতে সেটআপ করবেন৷

জাভা

import com.google.gdata.client.docs.*;
import com.google.gdata.client.authn.oauth.*;

String CONSUMER_KEY = "example.com";
String CONSUMER_SECRET = "abc123doremi";

GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);

DocsService client = new DocsService("yourCompany-YourAppName-v1");
client.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());

// Retrieve user's list of Google Docs
String user = "any.user@anydomain.com";
URL feedUrl = new URL("https://docs.google.com/feeds/default/private/full" +
                      "?xoauth_requestor_id=" + user);

DocumentListFeed resultFeed = client.getFeed(feedUrl, DocumentListFeed.class);
for (DocumentListEntry entry : resultFeed.getEntries()) {
  System.out.println(entry.getTitle().getPlainText());
}

পিএইচপি

require_once 'Zend/Oauth/Consumer.php';
require_once 'Zend/Gdata/Docs.php';

$CONSUMER_KEY = 'example.com';
$CONSUMER_SECRET = 'abc123doremi';
$USER = 'any.user@anydomain.com';

$oauthOptions = array(
    'requestScheme' => Zend_Oauth::REQUEST_SCHEME_HEADER,
    'version' => '1.0',
    'signatureMethod' => 'HMAC-SHA1',
    'consumerKey' => $CONSUMER_KEY,
    'consumerSecret' => $CONSUMER_SECRET
);

$consumer = new Zend_Oauth_Consumer($oauthOptions);
$token = new Zend_Oauth_Token_Access();
$httpClient = $token->getHttpClient($oauthOptions);

$client = new Zend_Gdata_Docs($httpClient);

// Retrieve user's list of Google Docs
$feed = $client->getDocumentListFeed('https://docs.google.com/feeds/default/private/full?xoauth_requestor_id=' . urlencode($USER));
foreach ($feed->entries as $entry) {
  echo "$entry->title\n";
}

পাইথন

আপনি যদি GDClient এর উপর ভিত্তি করে নতুন v2.0+ ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

import gdata.gauth
import gdata.docs.client

CONSUMER_KEY = 'example.com'
CONSUMER_SECRET = 'abc123doremi'
requestor_id = 'any.user@anydomain.com'

client = gdata.docs.client.DocsClient(source='yourCompany-YourAppName-v1')
client.auth_token = gdata.gauth.TwoLeggedOAuthHmacToken(
    CONSUMER_KEY, CONSUMER_SECRET, requestor_id)

# Retrieve user's list of Google Docs
feed = client.GetDocList()
for entry in feed.entry:
  print entry.title.text

আপনি যদি GDataService এর উপর ভিত্তি করে পুরানো v1.0 ক্লাস ব্যবহার করেন, তাহলে ব্যবহার করুন:

import gdata.auth
import gdata.docs.service

CONSUMER_KEY = 'example.com'
CONSUMER_SECRET = 'abc123doremi'
SIG_METHOD = gdata.auth.OAuthSignatureMethod.HMAC_SHA1

requestor_id = 'any.user@anydomain.com'

client = gdata.docs.service.DocsService(source='yourCompany-YourAppName-v1')
client.SetOAuthInputParameters(SIG_METHOD, CONSUMER_KEY, consumer_secret=CONSUMER_SECRET,
                               two_legged_oauth=True, requestor_id=requestor_id)

# Retrieve user's list of Google Docs
feed = client.GetDocumentListFeed()
for entry in feed.entry:
  print entry.title.text

# Change to another user on your domain
client.GetOAuthInputParameters().requestor_id = 'another.user@example.com'

.নেট

using Google.GData.Client;
using Google.GData.Documents;

// Create an OAuth factory to use
GOAuthRequestFactory requestFactory = new GOAuthRequestFactory("writely", "yourCompany-YourAppName-v1");
requestFactory.ConsumerKey = "example.com";
requestFactory.ConsumerSecret = "abc123doremi";

String user = "any.user@anydomain.com";

DocumentsService client = new DocumentsService("yourCompany-YourAppName-v1");
client.RequestFactory = requestFactory;

// Retrieve user's list of Google Docs
DocumentsListQuery query = new DocumentsListQuery();
query.Uri = new OAuthUri("https://docs.google.com/feeds/default/private/full", user, requestFactory.ConsumerKey);

DocumentsFeed feed = client.Query(query);

foreach (DocumentEntry entry in feed.Entries)
{
  Console.WriteLine(entry.Title.Text);
}

অতিরিক্ত 2-লেগড OAuth সম্পদ এবং নমুনা

একটি স্ব-স্বাক্ষরকারী ব্যক্তিগত কী এবং সর্বজনীন শংসাপত্র তৈরি করা

ব্যক্তিগত কীটি একটি স্বাক্ষর তৈরি করতে ব্যবহৃত হয়, যা প্রতিটি অনুরোধের সাথে অন্তর্ভুক্ত করা আবশ্যক। সার্টিফিকেটে এমবেড করা সর্বজনীন কী স্বাক্ষর যাচাই করতে Google ব্যবহার করে। সর্বজনীন কীটি PEM ফর্ম্যাটে X.509 শংসাপত্রে এনকোড করা একটি 1024-বিট RSA কী হতে হবে৷ নিবন্ধনের সময় সার্টিফিকেটটি Google-এ পাঠাতে হবে।

নিম্নলিখিত বিভাগগুলি দুটি নির্দিষ্ট সরঞ্জাম ব্যবহার করে কীভাবে কী এবং শংসাপত্র তৈরি করতে হয় তার উদাহরণ প্রদান করে: OpenSSL ইউটিলিটি এবং জাভা-এর keytool ইউটিলিটি।

এই উদাহরণগুলি Google Data API-এর জন্য নির্দিষ্ট নয়; আপনি যে কোনো উদ্দেশ্যে কী তৈরি করতে একই ইউটিলিটি ব্যবহার করতে পারেন।

উদাহরণগুলি অনুমান করে যে আপনার কোম্পানির নাম My_Company, এবং এটি মাউন্টেন ভিউ, ক্যালিফোর্নিয়া, US, ডোমেন নাম example.com সহ অবস্থিত৷

OpenSSL ব্যবহার করে কী তৈরি করা হচ্ছে

RSA কী এবং সংশ্লিষ্ট শংসাপত্রের একটি জোড়া তৈরি করতে, আপনি নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

# 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

সতর্কতা : -nodes প্যারামিটার সহ এটি সুরক্ষিত করার জন্য একটি পাসওয়ার্ড ছাড়াই একটি ব্যক্তিগত কী তৈরি করে। যাইহোক, অতিরিক্ত নিরাপত্তার জন্য আপনার এই প্যারামিটারটি বাদ দেওয়ার কথা বিবেচনা করা উচিত।

-sha1 প্যারামিটারটি নির্দিষ্ট করে যে কীটি SHA1 স্বাক্ষর তৈরি করতে ব্যবহার করা হবে।

-subj প্যারামিটারটি শংসাপত্রটি উপস্থাপন করে এমন অ্যাপ্লিকেশনটির পরিচয় নির্দিষ্ট করে।

-keyout প্যারামিটারটি ফাইলটি নির্দিষ্ট করে যেটিতে কীগুলি থাকবে। এই ফাইলটিতে সংবেদনশীল তথ্য রয়েছে এবং এটি সুরক্ষিত করা উচিত এবং কারও সাথে ভাগ করা উচিত নয়।

-out প্যারামিটারটি সেই ফাইলটি নির্দিষ্ট করে যাতে শংসাপত্রটি PEM ফর্ম্যাটে থাকবে (যা নিবন্ধন করার সময় Google-এ পাঠানো যেতে পারে)।

.NET ক্লায়েন্টের জন্য কী তৈরি করা হচ্ছে

.NET ফ্রেমওয়ার্ক PEM ফর্ম্যাটে সংরক্ষিত কী বা সার্টিফিকেট বোঝে না। অতএব, আপনি .pem ফাইল তৈরি করার পরে একটি অতিরিক্ত পদক্ষেপের প্রয়োজন:

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

এই ধাপটি আপনার ব্যক্তিগত কী এবং শংসাপত্র থেকে একটি PFX ফাইল তৈরি করে। Google Data API-তে করা অনুরোধগুলিকে ডিজিটালি স্বাক্ষর করতে এই ফাইলটি .NET ক্লায়েন্ট লাইব্রেরিতে আমদানি করা যেতে পারে।

জাভা ক্লায়েন্টের জন্য কী তৈরি করা হচ্ছে

জাভা ক্লায়েন্ট PKCS#8 বিন্যাসে ব্যক্তিগত কী গ্রহণ করে। উপরের নির্দেশাবলী ব্যবহার করে একটি কী/সার্ট তৈরি করার পরে, আপনার তৈরি করা .pem ফাইল থেকে একটি .pk8 ফাইল তৈরি করুন:

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

বিকল্পভাবে, আপনি জাভা কী স্টোর এবং কীটুল ইউটিলিটি ব্যবহার করতে পারেন এক জোড়া RSA কী এবং সংশ্লিষ্ট শংসাপত্র তৈরি করতে। নিম্নলিখিত কমান্ড ব্যবহার করুন:

# 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

সতর্কতা : " changeme " একটি ভাল পাসওয়ার্ড নয়; এইটা শুধুমাত্র একটা উদাহরণ.

-dname প্যারামিটারটি শংসাপত্রটি উপস্থাপন করে এমন অ্যাপ্লিকেশনটির পরিচয় নির্দিষ্ট করে। -storepass প্যারামিটার কীস্টোর রক্ষা করার জন্য পাসওয়ার্ড নির্দিষ্ট করে। -keypass প্যারামিটার ব্যক্তিগত কী রক্ষা করার জন্য পাসওয়ার্ড নির্দিষ্ট করে।

ManageDomains টুলে ব্যবহার করা যেতে পারে এমন একটি ফাইলে সার্টিফিকেট লিখতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

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

উপরে ফিরে যাও