यूज़र आईडी और ऐप्लिकेशन आईडी के साथ 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 डेवलपर आईडी के तौर पर करता है, न कि डेवलपर के ईमेल के तौर पर इससे पहले ही अपने कारोबार के हिसाब से name@yourcompany.com जैसा कोई ईमेल पता बनाएं. आप पाएं का उपयोग करके डेवलपर के ईमेल पते से डेवलपर का आईडी पता कर सकते हैं डेवलपर एपीआई कॉल.

टोकन में असली यूज़र आईडी को शामिल करने के लिए 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 ऐक्सेस टोकन को वापस पाने और रद्द करने की सुविधा चालू करनी है को असली यूज़र आईडी या ऐप्लिकेशन आईडी से जोड़ा जा सकता है.

नीचे दिए गए कॉल करने वाले उपयोगकर्ता को संगठन एडमिन की भूमिका में होना चाहिए या संगठन के लिए 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}

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

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

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

संगठन एडमिन की भूमिका के पास पहले से ही ज़रूरी अनुमतियां होनी चाहिए. opsadmin की भूमिका, तो अनुमतियां ऐसी होनी चाहिए शामिल करें:

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

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

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

/oauth2 संसाधन के लिए, opsadmin की भूमिका 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} 

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

पक्का करें कि conf_keymanagement_oauth_max_search_limit /opt/apigee/customer/application/management-server.properties में मौजूद प्रॉपर्टी फ़ाइल 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 ऐक्सेस जनरेट करती है टोकन. जोड़े गए &lt;AppEndUser&gt; टैग को बोल्ड में नोट करें, जिससे पता चलता है कि वह वैरिएबल जिसमें असली उपयोगकर्ता का आईडी शामिल है:

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