本文件將說明如何透過 User-ID 和/或應用程式 ID。
系統會自動將應用程式 ID 新增至 OAuth 存取權杖。因此,在您使用 為機構啟用權杖存取權的程序。您可以依應用程式 ID 存取權杖。
如要依使用者 ID 擷取及撤銷 OAuth 2.0 存取權杖,必須擁有使用者 ID 。以下程序說明如何將 User-ID 新增至現有權杖 直到新符記
根據預設,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。如果啟用擷取和撤銷功能 ,也就是您使用的應用程式 ID。access_token
欄位 包含 OAuth 2.0 存取權杖值。
如要啟用依使用者 ID 擷取及撤銷 OAuth 2.0 存取權杖的功能,請設定 按照以下程序說明,在憑證中加入使用者 ID 的 OAuth 2.0 政策。
使用者 ID 是 Edge 用來當做開發人員 ID 的字串,而非開發人員的電子郵件 讓我們看看 DNS 解析 進一步探索內部和外部位址您可以使用開發人員電子郵件地址中的 Developer API 呼叫。
設定 Edge 在權杖中加入使用者 ID 後,就會以 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 依使用者 ID 和應用程式 ID 區分的 OAuth 2.0 存取權杖
使用下列 API,依使用者 ID 和/或應用程式 ID 存取 OAuth 權杖:
啟用權杖存取權的程序
請按照以下程序啟用 OAuth 2.0 存取權杖的擷取和撤銷程序。 User-ID 和應用程式 ID
步驟 1: 為機構啟用權杖存取支援
您必須分別為每個機構啟用權杖存取權。針對每個項目呼叫下方的 PUT API 您想在其中啟用及撤銷 OAuth 2.0 存取權杖的組織 使用者 ID 或應用程式 ID
進行以下通話的使用者必須是 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) 及撤銷 (HTTP PUT) OAuth 2.0 權杖的權限
使用者 ID 或應用程式 ID如要控制存取權,請為以下項目設定取得並放置權限:
機構。這項資源會採用以下形式的網址:
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>
您可以使用 Get
單一 Resource API 呼叫的權限,即可查看哪些角色具有
/oauth2
資源。
根據回應,您可以用 Add 資源擁有特定角色的權限和 刪除 Resource API 呼叫的權限,為 /oauth2 進行任何必要調整 資源權限
使用下列 curl
指令授予 opsadmin
角色
/oauth2
資源的 get
和 put
權限。將
將 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:設定可以產生符記以納入使用者 ID 的 OAuth 2.0 政策
設定用來產生存取權杖的 OAuth 2.0 政策,將使用者 ID 加入 取得憑證在存取權杖中加入使用者 ID,您就可以透過以下方式擷取及撤銷權杖: 編號。
如要設定政策,在存取權杖中加入使用者 ID,則 存取權杖必須包含使用者 ID,且您必須指定 包含 User-ID。
下方名為 GenerateAccessTokenClient 的 OAuth 2.0 政策會產生 OAuth 2.0 存取權
產生下一個符記請注意,新增指定了粗體的 <AppEndUser>
標記
包含 User-ID 的變數:
<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 存取權
權杖,並將使用者 ID 做為 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
- 使用提供使用者 ID 的流程變數