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

Edge for Private Cloud v. 4.17.01

इस दस्तावेज़ में, एंड यूज़र आईडी, ऐप्लिकेशन आईडी या दोनों के हिसाब से, 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, डेवलपर आईडी के तौर पर करता है, न कि डेवलपर के ईमेल पते के तौर पर. डेवलपर के ईमेल पते से डेवलपर का आईडी पता किया जा सकता है. इसके लिए, आपको Developer API कॉल का इस्तेमाल करना होगा.

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

{
  "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 ऐक्सेस टोकन को वापस पाने और रद्द करने की सुविधा चालू करनी है.

नीचे दिए गए कॉल करने वाले उपयोगकर्ता को संगठन के लिए, संगठन एडमिन या opsएडमिन की भूमिका में होना चाहिए. {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 भूमिकाओं के लोगों को, उपयोगकर्ता आईडी या ऐप्लिकेशन आईडी के आधार पर, OAuth 2.0 टोकन को वापस पाने (एचटीटीपी GET) और रद्द करने (एचटीटीपी 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 संसाधन की अनुमतियों में ज़रूरी बदलाव करने के लिए, किसी भूमिका के लिए संसाधन के लिए अनुमतियां जोड़ें और संसाधन की अनुमति मिटाएं एपीआई कॉल का इस्तेमाल किया जा सकता है.

opsadmin भूमिका को /oauth2 संसाधन के लिए get और put अनुमतियां देने के लिए, नीचे दिए गए cURL निर्देश का इस्तेमाल करें. {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} 

orgadmin और opsadmin के अलावा, अन्य भूमिकाओं से /oauth2 संसाधन के लिए get और put अनुमतियां रद्द करने के लिए, नीचे दिए गए cURL कमांड का इस्तेमाल करें. {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>

इसके बाद, OAuth 2.0 ऐक्सेस टोकन जनरेट करने के लिए, यहां दिए गए cURL निर्देश का इस्तेमाल किया जा सकता है. इसके लिए, उपयोगकर्ता आईडी को 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
  • असली उपयोगकर्ता आईडी देने वाले फ़्लो वैरिएबल का इस्तेमाल करना