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

Edge for Private Cloud v4.18.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, डेवलपर आईडी के तौर पर करता है, न कि डेवलपर के ईमेल पते के तौर पर. डेवलपर के ईमेल पते से, डेवलपर का आईडी पता लगाया जा सकता है. इसके लिए, Get Developer API कॉल का इस्तेमाल करें.

टोकन में असली यूज़र आईडी को शामिल करने के लिए 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 की भूमिका होनी चाहिए. values को अपने संगठन के हिसाब से वैल्यू से बदलें:

curl -H "Content-type:text/xml" -X POST \
  https://management_server_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 USER_EMAIL:PASSWORD

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

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

https://management_server_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 निर्देश का इस्तेमाल करें. values को अपने संगठन के हिसाब से वैल्यू से बदलें:

curl -X POST -H 'Content-type:application/xml' \
  http://management_server_IP:8080/v1/organizations/org_name/userroles/opsadmin/permissions \
  -d '<ResourcePermission path="/oauth2">
      <Permissions>
        <Permission>get</Permission>
        <Permission>put</Permission>
      </Permissions>
    </ResourcePermission>' \
  -u USEREMAIL:PASSWORD

orgadmin और opsadmin के अलावा, अन्य भूमिकाओं से /oauth2 संसाधन के लिए get और put की अनुमतियां रद्द करने के लिए, यहां दिए गए curl कमांड का इस्तेमाल करें. values को अपने संगठन के हिसाब से वैल्यू से बदलें:

curl -X DELETE -H 'Content-type:application/xml' \
  http://management_server_IP:8080/v1/organizations/org_name/userroles/roles/permissions \
  -d '<ResourcePermission path="/oauth2">
      <Permissions></Permissions>
    </ResourcePermission>' \
   -u USEREMAIL:PASSWORD

तीसरा चरण: 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
  • असली यूज़र आईडी देने वाले फ़्लो वैरिएबल का इस्तेमाल करें