เปิดใช้การเข้าถึงโทเค็น OAuth 2.0 ตามรหัสผู้ใช้และรหัสแอป

Edge for Private Cloud เวอร์ชัน 4.16.09

เอกสารนี้อธิบายวิธีเปิดใช้การเรียกข้อมูลและการเพิกถอนโทเค็นเพื่อการเข้าถึง OAuth 2.0 ตามรหัสผู้ใช้ปลายทาง รหัสแอป หรือทั้ง 2 อย่าง

ระบบจะเพิ่มรหัสแอปลงในโทเค็นเพื่อการเข้าถึง 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 มี UUID ของแอปที่เชื่อมโยงกับโทเค็น หากคุณเปิดใช้การเรียกข้อมูลและการเพิกถอนโทเค็นเพื่อการเข้าถึง OAuth 2.0 ตามรหัสแอป รหัสนี้คือรหัสแอปที่คุณใช้
  • ช่อง access_token มีค่าโทเค็นเพื่อการเข้าถึง OAuth 2.0

หากต้องการเปิดใช้การดึงข้อมูลและการเพิกถอนโทเค็นเพื่อการเข้าถึง OAuth 2.0 ตามรหัสผู้ใช้ปลายทาง ให้กำหนดค่านโยบาย OAuth 2.0 เพื่อรวมรหัสผู้ใช้ไว้ในโทเค็นตามที่อธิบายไว้ในขั้นตอนด้านล่าง

รหัสผู้ใช้ปลายทางคือสตริงที่ Edge ใช้เป็นรหัสนักพัฒนาแอป ไม่ใช่อีเมลของนักพัฒนาแอป คุณสามารถระบุรหัสของนักพัฒนาแอปจากอีเมลของนักพัฒนาแอปได้โดยใช้การเรียก API Get Developer

หลังจากกำหนดค่า 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"
}

API เพื่อดึงข้อมูลและเพิกถอนโทเค็นเพื่อการเข้าถึง OAuth 2.0 ตามรหัสผู้ใช้และรหัสแอป

ใช้ API ต่อไปนี้เพื่อเข้าถึงโทเค็น OAuth ตามรหัสผู้ใช้ รหัสแอป หรือทั้ง 2 อย่าง

ขั้นตอนการเปิดใช้การเข้าถึงโทเค็น

ใช้ขั้นตอนต่อไปนี้เพื่อเปิดใช้การเรียกข้อมูลและการเพิกถอนโทเค็นเพื่อการเข้าถึง OAuth 2.0 ตามรหัสผู้ใช้ปลายทางและรหัสแอป

ขั้นตอนที่ 1: เปิดใช้การรองรับการเข้าถึงโทเค็นสำหรับองค์กร

คุณต้องเปิดใช้การเข้าถึงโทเค็นสำหรับแต่ละองค์กรแยกกัน เรียกใช้ PUT API ด้านล่างสำหรับแต่ละองค์กรที่คุณต้องการเปิดใช้การเรียกข้อมูลและการเพิกถอนโทเค็นเพื่อการเข้าถึง OAuth 2.0 ตามรหัสผู้ใช้ปลายทางหรือรหัสแอป

ผู้ใช้ที่ทำการเรียกต่อไปนี้ต้องมีบทบาทเป็น orgadmin หรือ opsadmin สำหรับองค์กร แทนที่ค่าใน{วงเล็บปีกกา} ด้วยค่าเฉพาะขององค์กร ดังนี้

> 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 ในองค์กร

เฉพาะบทบาท orgadmin และ opsadmin ในองค์กรเท่านั้นที่ควรได้รับสิทธิ์ในการดึงข้อมูล (HTTP GET) และเพิกถอน (HTTP PUT) โทเค็น OAuth 2.0 ตามรหัสผู้ใช้หรือรหัสแอป หากต้องการควบคุมการเข้าถึง ให้ตั้งค่าสิทธิ์ get และ put ในทรัพยากร /oauth2 สำหรับองค์กร ทรัพยากรดังกล่าวมี URL ในรูปแบบต่อไปนี้

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

บทบาท orgadmin ควรมีสิทธิ์ที่จำเป็นอยู่แล้ว สำหรับบทบาท opsadmin สำหรับทรัพยากร /oauth2 สิทธิ์ควรมีลักษณะดังนี้

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

คุณสามารถใช้การเรียก Get Permission for a Single Resource API เพื่อดูว่าบทบาทใดมีสิทธิ์สำหรับทรัพยากร /oauth2

คุณสามารถใช้การเรียก API Add Permissions for Resource to a Role และ Delete Permission for Resource เพื่อปรับเปลี่ยนสิทธิ์ของทรัพยากร /oauth2 ตามที่จำเป็นได้โดยอิงตามการตอบกลับ

ใช้คำสั่ง cURL ต่อไปนี้เพื่อให้บทบาท opsadmin มีสิทธิ์ get และ put สำหรับทรัพยากร /oauth2 แทนที่ค่าใน{วงเล็บปีกกา} ด้วยค่าเฉพาะขององค์กร ดังนี้

> 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 ต่อไปนี้เพื่อเพิกถอนสิทธิ์ get และ put สำหรับทรัพยากร /oauth2 จากบทบาทอื่นที่ไม่ใช่ orgadmin และ opsadmin แทนที่ค่าใน{วงเล็บปีกกา} ด้วยค่าเฉพาะขององค์กร ดังนี้

> 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} 

ขั้นตอนที่ 3: ตั้งค่าพร็อพเพอร์ตี้ oauth_max_search_limit

ตรวจสอบว่าพร็อพเพอร์ตี้ conf_keymanagement_oauth_max_search_limit ในไฟล์ /<inst_dir>/apigee/customer/application/management-server.properties ตั้งค่าเป็น 100 ดังนี้

conf_keymanagement_oauth_max_search_limit = 100

หากไม่มีไฟล์นี้ ให้สร้างขึ้นมา

พร็อพเพอร์ตี้นี้จะกำหนดขนาดหน้าเว็บที่ใช้เมื่อดึงข้อมูลโทเค็น Apigee แนะนำให้ใช้ค่า 100 แต่คุณสามารถตั้งค่าได้ตามที่เห็นสมควร

ในการติดตั้งใหม่ พร็อพเพอร์ตี้ควรตั้งค่าเป็น 100 อยู่แล้ว หากต้องเปลี่ยนค่าของพร็อพเพอร์ตี้นี้ ให้รีสตาร์ท Management Server และ Message Processor โดยใช้คำสั่งต่อไปนี้

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

ขั้นตอนที่ 4: กำหนดค่านโยบาย 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 โดยส่งรหัสผู้ใช้เป็นส่วนหัว 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
  • ใช้ตัวแปรโฟลว์ที่ระบุรหัสผู้ใช้ปลายทาง