Edge สำหรับ Private Cloud เวอร์ชัน 4.19.01
เอกสารนี้จะอธิบายวิธีเปิดใช้การดึงข้อมูลและการเพิกถอนโทเค็นเพื่อการเข้าถึง 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 ตามรหัสผู้ใช้ รหัสแอป หรือทั้ง 2 อย่าง
- รับโทเค็นเพื่อการเข้าถึง OAuth 2.0 ตามรหัสผู้ใช้ปลายทางหรือรหัสแอป
- เพิกถอนโทเค็นเพื่อการเข้าถึง OAuth 2.0 โดยใช้รหัสผู้ใช้ปลายทางหรือรหัสแอป
ขั้นตอนในการเปิดใช้การเข้าถึงโทเค็น
ทำตามขั้นตอนต่อไปนี้เพื่อเปิดใช้การดึงข้อมูลและการเพิกถอนโทเค็นเพื่อการเข้าถึง OAuth 2.0 โดยใช้รหัสผู้ใช้ปลายทางและรหัสแอป
ขั้นตอนที่ 1: เปิดใช้การสนับสนุนการเข้าถึงโทเค็นสำหรับองค์กร
คุณต้องเปิดใช้การเข้าถึงโทเค็นสำหรับแต่ละองค์กรแยกกัน เรียกใช้ 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
ขั้นตอนที่ 2: ตั้งค่าสิทธิ์สำหรับบทบาทผู้ดูแลระบบ opsadmin ในองค์กร
เฉพาะบทบาท orgadmin
และ opsadmin
ในองค์กรเท่านั้นที่ควรได้รับสิทธิ์ในการเรียก (HTTP GET) และเพิกถอนโทเค็น OAuth 2.0 (HTTP PUT) ตาม
รหัสผู้ใช้หรือรหัสแอป หากต้องการควบคุมการเข้าถึง ให้ตั้งค่า get และใส่สิทธิ์ในทรัพยากร /oauth2 สำหรับองค์กร ทรัพยากรนั้นมี URL ในรูปแบบ:
https://management_server_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 เพิ่มสิทธิ์สำหรับทรัพยากรในบทบาทและ ลบสิทธิ์สำหรับทรัพยากรเพื่อทำการปรับเปลี่ยนที่จำเป็นในสิทธิ์ทรัพยากร /oauth2 ได้ ทั้งนี้ขึ้นอยู่กับการตอบกลับ
ใช้คำสั่ง curl
ต่อไปนี้เพื่อให้สิทธิ์ opsadmin
ในบทบาท get
และ put
สำหรับทรัพยากร /oauth2
แทนที่ 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
ใช้คำสั่ง curl
ต่อไปนี้เพื่อเพิกถอนสิทธิ์ของ get
และ put
สำหรับทรัพยากร /oauth2
จากบทบาทอื่นนอกเหนือจาก orgadmin
และ opsadmin
แทนที่ 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
ขั้นตอนที่ 3: ตั้งค่าพร็อพเพอร์ตี้ 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
ขั้นตอนที่ 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
- ใช้ตัวแปรโฟลว์ที่ระบุรหัสผู้ใช้ปลายทาง