यूज़र आईडी और ऐप्लिकेशन आईडी के साथ OAuth 2.0 टोकन का ऐक्सेस चालू करें

Edge for Private Cloud v. 4.17.05

इस दस्तावेज़ में असली यूज़र आईडी, ऐप्लिकेशन आईडी या दोनों के ज़रिए OAuth 2.0 ऐक्सेस टोकन को वापस पाने और रद्द करने की सुविधा चालू करने का तरीका बताया गया है.

ऐप्लिकेशन आईडी अपने-आप OAuth ऐक्सेस टोकन में जुड़ जाते हैं. इसलिए, किसी संगठन के लिए टोकन का ऐक्सेस चालू करने के लिए, नीचे दी गई प्रक्रिया इस्तेमाल करने के बाद, ऐप्लिकेशन आईडी से टोकन ऐक्सेस किए जा सकते हैं.

असली उपयोगकर्ता आईडी के ज़रिए OAuth 2.0 ऐक्सेस टोकन को पाने और रद्द करने के लिए, ऐक्सेस टोकन में असली यूज़र आईडी मौजूद होना चाहिए. नीचे दी गई प्रोसेस में, किसी मौजूदा टोकन या नए टोकन में असली यूज़र आईडी जोड़ने का तरीका बताया गया है.

डिफ़ॉल्ट रूप से, जब Edge OAuth 2.0 ऐक्सेस टोकन जनरेट करता है, तो टोकन का फ़ॉर्मैट इस तरह होता है:

{
  "issued_at" : "1421847736581",
  "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
  "scope" : "READ",
  "status" : "approved",
  "api_product_list" : "[PremiumWeatherAPI]",
  "expires_in" : "3599",
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "token_type" : "BearerToken",
  "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
  "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
  "organization_name" : "myorg",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

निम्न पर ध्यान दें:

  • application_name फ़ील्ड में टोकन से जुड़े ऐप्लिकेशन का यूयूआईडी होता है. अगर आपने ऐप्लिकेशन आईडी से, OAuth 2.0 ऐक्सेस टोकन को वापस पाने और रद्द करने की सुविधा चालू की है, तो इस ऐप्लिकेशन आईडी का इस्तेमाल किया जाता है.
  • access_token फ़ील्ड में, OAuth 2.0 ऐक्सेस टोकन वैल्यू शामिल होती है.

असली यूज़र आईडी के ज़रिए OAuth 2.0 ऐक्सेस टोकन को वापस पाने और रद्द करने के लिए, OAuth 2.0 नीति को कॉन्फ़िगर करें. ऐसा करने के बाद, टोकन में यूज़र आईडी को शामिल किया जा सकेगा. इसके बारे में नीचे बताया गया है.

असली यूज़र आईडी वह स्ट्रिंग होती है जिसका इस्तेमाल Edge डेवलपर आईडी के तौर पर करता है, न कि डेवलपर के ईमेल पते के तौर पर. डेवलपर का आईडी, उसके ईमेल पते से लिया जा सकता है. इसके लिए, 'डेवलपर एपीआई पाएं' कॉल का इस्तेमाल करें.

जब टोकन में असली यूज़र आईडी को शामिल करने के लिए Edge को कॉन्फ़िगर किया जाता है, तो उसे app_enduser फ़ील्ड के तौर पर शामिल किया जाता है, जैसा कि नीचे दिखाया गया है:

{
  "issued_at" : "1421847736581",
  "application_name" : "a68d01f8-b15c-4be3-b800-ceae8c456f5a",
  "scope" : "READ",
  "app_enduser" : "6ZG094fgnjNf02EK",
  "status" : "approved",
  "api_product_list" : "[PremiumWeatherAPI]",
  "expires_in" : "3599",
  "developer.email" : "tesla@weathersample.com",
  "organization_id" : "0",
  "token_type" : "BearerToken",
  "client_id" : "k3nJyFJIA3p62DWOkLO6OJNi87GYXFmP",
  "access_token" : "7S22UqXGJDTuUADGzJzjXzXSaGJL",
  "organization_name" : "myorg",
  "refresh_token_expires_in" : "0",
  "refresh_count" : "0"
}

यूज़र आईडी और ऐप्लिकेशन आईडी के हिसाब से, OAuth 2.0 ऐक्सेस टोकन को पाने और रद्द करने के लिए एपीआई

यूज़र आईडी, ऐप्लिकेशन आईडी या दोनों के हिसाब से OAuth टोकन ऐक्सेस करने के लिए, इन एपीआई का इस्तेमाल करें:

टोकन का ऐक्सेस चालू करने की प्रक्रिया

असली यूज़र आईडी और ऐप्लिकेशन आईडी की मदद से, OAuth 2.0 ऐक्सेस टोकन को वापस पाने और रद्द करने की प्रक्रिया चालू करने के लिए, नीचे दी गई प्रोसेस का इस्तेमाल करें.

पहला चरण: किसी संगठन के लिए टोकन ऐक्सेस करने से जुड़ी सहायता चालू करना

आपको हर संगठन के लिए, टोकन का ऐक्सेस अलग-अलग चालू करना होगा. नीचे दिए गए हर उस संगठन के लिए PUT API को कॉल करें जिसमें आपको असली यूज़र आईडी या ऐप्लिकेशन आईडी की मदद से, OAuth 2.0 ऐक्सेस टोकन को वापस पाने और रद्द करने की सुविधा चालू करनी है.

नीचे दिए गए कॉल को करने वाले उपयोगकर्ता को, संगठन के लिए orgadmin या opsadmin की भूमिका में होना ज़रूरी है. {curly braces} में दी गई वैल्यू को संगठन के हिसाब से तय की गई वैल्यू से बदलें:

> curl -H "Content-type:text/xml" -X POST \
  https://<ms-ip>:8080/v1/organizations/{org_name} \
  -d '<Organization name="{org_name}">
      <Properties>
        <Property name="features.isOAuthRevokeEnabled">true</Property>
        <Property name="features.isOAuth2TokenSearchEnabled">true</Property>
      </Properties>
    </Organization>' \ 
  -u {userEmail}:{mypassword}

दूसरा चरण: संगठन में ऑपरेशन की भूमिका के लिए अनुमतियां सेट करना

किसी संगठन में सिर्फ़ orgadmin और opsadmin भूमिकाओं को ही User-ID या ऐप्लिकेशन आईडी के आधार पर, OAuth 2.0 टोकन को वापस पाने (एचटीटीपी जीईटी) और रद्द करने (एचटीटीपी PUT) के लिए अनुमतियां दी जानी चाहिए. ऐक्सेस कंट्रोल करने के लिए, संगठन के लिए /oauth2 संसाधन पर जाएं और अनुमतियां सेट करें. उस संसाधन का यूआरएल इस रूप में होता है:

https://<ms-ip>:8080/v1/organizations/{org_name}/oauth2

orgadmin भूमिका के पास पहले से ही ज़रूरी अनुमतियां होनी चाहिए. /oauth2 संसाधन के लिए opsadmin की भूमिका के लिए, अनुमतियां इस तरह दिखनी चाहिए:

<ResourcePermission path="/oauth2">
    <Permissions>
        <Permission>get</Permission>
        <Permission>put</Permission>
    </Permissions>
</ResourcePermission>

सिंगल रिसॉर्स एपीआई के लिए अनुमति पाएं कॉल का इस्तेमाल करके, यह देखा जा सकता है कि किन भूमिकाओं के पास /oauth2 संसाधन के लिए अनुमतियां हैं.

रिस्पॉन्स के आधार पर, /oauth2 संसाधन की अनुमतियों में ज़रूरी बदलाव करने के लिए, किसी भूमिका के लिए संसाधन के लिए अनुमतियां जोड़ें और संसाधन के लिए अनुमति मिटाएं एपीआई कॉल का इस्तेमाल किया जा सकता है.

नीचे दिए गए cURL कमांड का इस्तेमाल करके, /oauth2 संसाधन के लिए opsadmin भूमिका get और put अनुमतियां दें. {curly braces} में दी गई वैल्यू को संगठन के हिसाब से तय की गई वैल्यू से बदलें:

> curl -X POST -H 'Content-type:application/xml' \
  http://<ms-ip>:8080/v1/organizations/{org}/userroles/opsadmin/permissions \
  -d '<ResourcePermission path="/oauth2">
      <Permissions>
        <Permission>get</Permission>
        <Permission>put</Permission>
      </Permissions>
    </ResourcePermission>' \
  -u {USEREMAIL}:{PWD} 

नीचे दिए गए cURL कमांड का इस्तेमाल करके, orgadmin और opsadmin के अलावा, /oauth2 संसाधन के लिए, get और put की अनुमतियों को रद्द करें. {curly braces} में दी गई वैल्यू को संगठन के हिसाब से तय की गई वैल्यू से बदलें:

> curl -X DELETE -H 'Content-type:application/xml' \
  http://<msip>:8080/v1/organizations/{org-name}/userroles/{roles}/permissions \
  -d '<ResourcePermission path="/oauth2">
      <Permissions></Permissions>
    </ResourcePermission>' \
   -u {USEREMAIL}:{PWD} 

तीसरा चरण: oauth_max_search_limit प्रॉपर्टी सेट करना

पक्का करें कि /opt/apigee/customer/application/management-server.properties फ़ाइल में conf_keymanagement_oauth_max_search_limit प्रॉपर्टी 100 पर सेट कर दिया गया हो:

conf_keymanagement_oauth_max_search_limit = 100

अगर यह फ़ाइल मौजूद नहीं है, तो इसे बनाएं.

यह प्रॉपर्टी, टोकन फ़ेच करने के लिए इस्तेमाल किए जाने वाले पेज का साइज़ सेट करती है. Apigee, 100 वैल्यू का सुझाव देता है. हालांकि, इसे अपनी ज़रूरत के हिसाब से सेट किया जा सकता है.

किसी नए इंस्टॉलेशन के लिए, प्रॉपर्टी पहले से ही 100 पर सेट होनी चाहिए. अगर आपको इस प्रॉपर्टी की वैल्यू बदलनी है, तो इन निर्देशों का इस्तेमाल करके मैनेजमेंट सर्वर और मैसेज प्रोसेसर को रीस्टार्ट करें:

> /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
> /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

चौथा चरण: OAuth 2.0 नीति को कॉन्फ़िगर करें. यह नीति असली यूज़र आईडी को शामिल करने के लिए टोकन जनरेट करती है.

टोकन में असली यूज़र आईडी को शामिल करने के लिए, ऐक्सेस टोकन जनरेट करने के लिए इस्तेमाल की जाने वाली OAuth 2.0 नीति को कॉन्फ़िगर करें. ऐक्सेस टोकन में असली यूज़र आईडी को शामिल करके, टोकन को आईडी से वापस पाया जा सकता है और रद्द किया जा सकता है.

ऐक्सेस टोकन में असली यूज़र आईडी को शामिल करने के लिए, नीति को कॉन्फ़िगर करने के लिए, ऐक्सेस टोकन बनाने वाले अनुरोध में असली यूज़र आईडी शामिल होना चाहिए. साथ ही, आपको उस इनपुट वैरिएबल के बारे में बताना होगा जिसमें असली यूज़र आईडी शामिल हो.

नीचे दी गई OAuth 2.0 नीति, generateAccessTokenClient नाम की नीति है. इससे OAuth 2.0 ऐक्सेस टोकन जनरेट किया जाता है. ध्यान दें कि <AppEndUser> टैग को बोल्ड में जोड़ा गया है. इससे असली यूज़र आईडी वाले वैरिएबल के बारे में पता चलता है:

<OAuthV2 async="false" continueOnError="false" enabled="true" name="GenerateAccessTokenClient">
    <DisplayName>OAuth 2.0.0 1</DisplayName>
    <ExternalAuthorization>false</ExternalAuthorization>
    <Operation>GenerateAccessToken</Operation>
    <SupportedGrantTypes>
         <GrantType>client_credentials</GrantType>
    </SupportedGrantTypes>
    <GenerateResponse enabled="true"/>
    <GrantType>request.queryparam.grant_type</GrantType> 
    <AppEndUser>request.header.appuserID</AppEndUser> 
    <ExpiresIn>960000</ExpiresIn>
</OAuthV2>

इसके बाद, इस cURL कमांड का इस्तेमाल करके, OAuth 2.0 ऐक्सेस टोकन जनरेट किया जा सकता है. साथ ही, User-ID को appuserID हेडर के तौर पर पास किया जा सकता है:

> curl -H "appuserID:6ZG094fgnjNf02EK" \
https://myorg-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials \
  -X POST \
  -d 'client_id=k3nJyFJIA3p62TKIkLO6OJNXFmP&client_secret=gk5K5lIp943AY4'

इस उदाहरण में, appuserID को अनुरोध के हेडर के तौर पर पास किया जाता है. किसी अनुरोध के तहत, कई तरीकों से जानकारी भेजी जा सकती है. उदाहरण के लिए, विकल्प के तौर पर ये काम किए जा सकते हैं:

  • फ़ॉर्म पैरामीटर वैरिएबल का इस्तेमाल करें: request.formparam.appuserID
  • असली यूज़र आईडी देने वाले फ़्लो वैरिएबल का इस्तेमाल करें