Edge for Private Cloud เวอร์ชัน 4.16.05
เอกสารนี้อธิบายวิธีเปิดใช้การเรียกและการเพิกถอนโทเค็นเพื่อการเข้าถึง 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 ของนักพัฒนาซอฟต์แวร์
หลังจากที่คุณกำหนดค่า 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 ตามรหัสผู้ใช้ รหัสแอป หรือทั้งสองอย่าง
- รับ OAuth 2.0 โทเค็นเพื่อการเข้าถึงตามรหัสผู้ใช้ปลายทางหรือรหัสแอป
- เพิกถอน OAuth 2.0 โทเค็นเพื่อการเข้าถึงตามรหัสผู้ใช้ปลายทางหรือรหัสแอป
ขั้นตอนการเปิดใช้การเข้าถึงโทเค็น
ใช้ขั้นตอนต่อไปนี้เพื่อเปิดใช้การดึงข้อมูลและการเพิกถอนโทเค็นเพื่อการเข้าถึง OAuth 2.0 โดย รหัสผู้ใช้ปลายทางและรหัสแอป
ขั้นตอนที่ 1 เปิดใช้การสนับสนุนการเข้าถึงโทเค็นสำหรับองค์กร
คุณต้องเปิดใช้การเข้าถึงโทเค็นสำหรับแต่ละองค์กรแยกกัน เรียก 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: ตั้งค่าสิทธิ์สำหรับบทบาทผู้ดูแลระบบ Ops Admin ในองค์กร
เฉพาะบทบาท orgadmin และ opsadmin ในองค์กรเท่านั้น ควรได้รับสิทธิ์ในการเรียก (HTTP GET) และเพิกถอนโทเค็น OAuth 2.0 (HTTP PUT) รหัสผู้ใช้หรือรหัสแอป หากต้องการควบคุมการเข้าถึง ให้ตั้งค่าสิทธิ์ "รับ" และ "กำหนดสิทธิ์บนทรัพยากร /oauth2" สำหรับ องค์กร ทรัพยากรดังกล่าวมี URL ในรูปแบบ:
https://<ms-ip>:8080/v1/organizations/{org_name}/oauth2
บทบาทผู้ดูแลระบบองค์กรควรมีสิทธิ์ที่จำเป็นอยู่แล้ว สำหรับ opsadmin สำหรับทรัพยากร /oauth2 สิทธิ์ควรมีลักษณะดังนี้ ดังนี้
<ResourcePermission path="/oauth2"> <Permissions> <Permission>get</Permission> <Permission>put</Permission> </Permissions> </ResourcePermission>
คุณสามารถใช้ สิทธิ์สำหรับการเรียก Single Resource API เพื่อดูว่าบทบาทใดมีสิทธิ์สำหรับ ทรัพยากร /oauth2
จากคำตอบที่ได้รับ คุณสามารถใช้ปุ่ม เพิ่ม สิทธิ์สำหรับทรัพยากรสำหรับบทบาทและ ลบการเรียก API สิทธิ์สำหรับทรัพยากรเพื่อทำการปรับเปลี่ยนที่จำเป็นใน /oauth2 สิทธิ์สำหรับทรัพยากร
ใช้คำสั่ง cURL ต่อไปนี้เพื่อมอบสิทธิ์ในการรับและป้อนบทบาท opsadmin สำหรับทรัพยากร /oauth2 แทนที่ค่าใน {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 ต่อไปนี้เพื่อเพิกถอนสิทธิ์ get และ put สำหรับทรัพยากร /oauth2 จากบทบาทอื่นที่ไม่ใช่ 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}
ขั้นตอนที่ 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 อยู่แล้ว หากคุณจำเป็นต้องเปลี่ยน ของคุณสมบัตินี้ ให้เริ่มต้นเซิร์ฟเวอร์การจัดการและผู้ประมวลผลข้อมูลข้อความใหม่โดยใช้ คำสั่ง:
> /<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 ที่ใช้สร้างโทเค็นเพื่อการเข้าถึงเพื่อใส่รหัสผู้ใช้ปลายทางไว้ใน โทเค็น เมื่อใส่รหัสผู้ใช้ปลายทางในโทเค็นเพื่อการเข้าถึง คุณจะสามารถเรียกและเพิกถอนโทเค็นได้โดย ID
หากต้องการกำหนดค่านโยบายให้รวมรหัสผู้ใช้ปลายทางไว้ในโทเค็นเพื่อการเข้าถึง คำขอที่สร้าง โทเค็นเพื่อการเข้าถึงต้องมีรหัสผู้ใช้ปลายทางและคุณต้องระบุตัวแปรอินพุตที่ จะมีรหัสผู้ใช้ปลายทาง
นโยบาย 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
- ใช้ตัวแปรโฟลว์ที่ระบุรหัสผู้ใช้ปลายทาง