按照使用者 ID 和應用程式 ID 存取 OAuth 2.0 權杖

Private Cloud v. 4.17.01 版

本文件將說明如何透過 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。替換 {curly 中的值 braces} 改成貴機構專屬值:

> curl -H "Content-type:text/xml" -X POST \
<  htt>ps://ms-ip:8080/v1/organizations/{org_name<} \
  -d 'Organization nam>e="<;{org_name>}"
 <     Properties
        Property name="f>eatu<res.isOAu>thRevokeE<nabled"true/Property
        Property name=&qu>ot;f<eatures.i>sOAuth2<TokenSearch>Enabl<ed"true/>Property
      /Properties
    /Organization' \ 
  -u {userEmail}:{mypassword}

步驟 2:設定機構中的 opsadmin 角色權限

僅限機構中的 orgadminopsadmin 角色 必須授予擷取 (HTTP GET) 及撤銷 (HTTP PUT) OAuth 2.0 權杖的權限 使用者 ID 或應用程式 ID如要控制存取權,請為以下項目設定取得並放置權限: 機構。這項資源會採用以下形式的網址:

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

orgadmin 角色應已具備必要權限。對於 /oauth2 資源的 opsadmin 角色,權限應如下所示 :

<ResourcePermission path="/oa>uth2&<quot;
    P>ermission<s
        >Per<missionget/>Permissio<n
        >Per<missionput/>Permi<ssion
    /P>e<rmissions
/Resource>Permission

您可以使用 Get 單一 Resource API 呼叫的權限,即可查看哪些角色具有 /oauth2 資源。

根據回應,您可以用 Add 資源擁有特定角色的權限 刪除 Resource API 呼叫的權限,為 /oauth2 進行任何必要調整 資源權限

使用以下 cURL 指令為 /oauth2 資源授予 opsadmin 角色 getput 權限。替換 將 {curly braces} 替換為機構專屬值:

> curl -X POST -H 'Content-type:application/xml' \
 < http>://ms-ip:8080/v1/organizations/{org}/userroles/opsadmin/permissions <\
  -d 'ResourcePermission pa>th=&quo<t;/oauth2&q>uot;
    <  Permissi>ons<
        Pe>rmissiong<et/Permiss>ion<
        Pe>rmissio<nput/Permiss>ion
 <     /Permissions
 >   /ResourcePermission' \
  -u {USEREMAIL}:{PWD} 

使用下列 cURL 指令撤銷 /oauth2 資源的 getput 權限,但 「orgadmin」和「opsadmin」。替換 {curly 中的值 braces} 改成貴機構專屬值:

> curl -X DELETE -H 'Content-type:application/xml' \
 < htt>p://msip:8080/v1/organizations/{org-name}/userroles/{roles}/permissions <\
  -d 'ResourcePermission pa>th=&quo<t;/oauth2&q><uot;
      P>ermis<sions/Permissions
 >   /ResourcePermission' \
   -u {USEREMAIL}:{PWD} 

步驟 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 存取權 產生下一個符記請注意,加入 &lt;AppEndUser&gt; 標記後, 包含 User-ID 的變數:

<OAuthV2 async="false" continueOnError="false" enabled="true" na>me=&q<uot;Generat>eAccessTokenC<lient"<>/span>
    D<isplayNameOAuth 2.0.0> 1/Di<splayName
    External>Autho<rizationf>alse/ExternalAuthor<ization
  >  Ope<rationGenerateAcces>sToken/Ope<ration
  >  SupportedGrantTy<pes
      >   Gr<antTypeclient_creden>tials</GrantType
    /SupportedGrantTy>pes
 <   Genera>teResponse enabled="true<"/
  >  Gran<tTypereque>st.queryparam.grant_type</GrantType >
    A<ppEndUser>reques<t.header.a>p<puserID/>AppEndUser 
    ExpiresIn960000/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=k3nJyFJIA3p62&TKIkLO6OJNXFmPclient_secret=gk5K5lIp943AY4'

在這個範例中,appuserID 會以要求標頭的形式傳遞您可以透過多種方式在要求中傳遞資訊。適用對象 舉例來說,您可以:

  • 使用以下表單參數變數:request.formparam.appuserID
  • 使用提供使用者 ID 的流程變數