使用API 管理個人存取權杖- Azure DevOps
文章推薦指數: 80 %
Azure AD 權杖是比使用pat 更安全的驗證機制。
基於此API 建立和撤銷Pat 的能力,我們想要確保只將這類強大的功能提供給允許的使用者。
Microsoft ...
跳到主要內容
已不再支援此瀏覽器。
請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。
下載MicrosoftEdge
其他資訊
目錄
結束焦點模式
儲存
共用
Twitter
LinkedIn
Facebook
電子郵件
WeChat
目錄
使用RESTAPI(Pat)管理個人存取權杖
發行項
11/29/2021
此頁面有所助益嗎?
請為您的體驗評分
Yes
No
還有其他意見反應嗎?
系統會將意見反應傳送給Microsoft:按下[提交]按鈕,您的意見反應將用來改善Microsoft產品和服務。
隱私權原則。
送出
謝謝。
本文內容
AzureDevOpsServices
當您處理大量的個人存取權杖時(Pat)您擁有的,使用UI單獨管理這些權杖的維護可能會變得很複雜。
管理API的PAT生命週期,您可以使用自動化程式輕鬆地管理與組織相關聯的Pat。
這組豐富的Api可讓您管理您擁有的Pat,讓您能夠建立新的個人存取權杖,並更新或過期現有的個人存取權杖。
在本文中,我們將示範如何設定應用程式,以使用AzureActiveDirectory(AzureAD)權杖來進行驗證,並使用PAT生命週期API進行呼叫。
如果您只想查看可用端點的完整清單,請參閱這裡的API參考。
必要條件
若要使用API,您必須使用AzureADtoken進行驗證。
若要深入瞭解如何執行這項操作,請前往下列驗證一節。
若要這樣做,必須符合一些必要條件:
您必須擁有具有有效Azure訂用帳戶的AzureAD租使用者。
根據租使用者的安全性原則,您的應用程式可能需要獲得存取組織中資源的許可權。
目前,在此租使用者中繼續使用此應用程式的唯一方法,是先要求系統管理員授與許可權給應用程式,您才能使用該應用程式。
使用AzureActiveDirectory(AzureAD)權杖進行驗證
不同于其他AzureDevOpsServicesapi,使用者必須提供AzureAD存取權杖,才能使用此API而非PAT權杖。
AzureAD權杖是比使用pat更安全的驗證機制。
基於此API建立和撤銷Pat的能力,我們想要確保只將這類強大的功能提供給允許的使用者。
Microsoft驗證程式庫(MSAL)包含多個相容的驗證流程,您可以在應用程式內用來取得和重新整理AzureAD權杖。
您可以在Microsoft驗證程式庫的「驗證流程」檔中找到完整的MSAL流程清單。
為您的應用程式選擇正確驗證方法的指南,可以在選擇AzureDevOps的正確驗證方法下找到。
重要
「代理程式」的解決方案(例如「用戶端認證」流程),而且任何未發出AzureAD存取權杖的驗證流程,都不能與此API搭配使用。
如果您的AzureAD租使用者中已啟用多重要素驗證,您絕對必須使用MSAL「授權碼」流程。
若要使用MSAL程式庫來自動取得和重新整理AzureAD存取權杖,您必須:
擁有具有有效Azure訂用帳戶的AzureAD租使用者
在AzureAD租使用者中註冊應用程式
將AzureDevOps許可權新增至應用程式
警告
擁有具有有效Azure訂用帳戶的AzureAD租使用者,是使用此API的必要條件。
一旦您的應用程式具有可處理AzureAD權杖的工作驗證流程,您就可以使用這些權杖來呼叫PAT生命週期管理API。
在下一節中,我們會示範如何建立應用程式,以使用MSAL程式庫來驗證具有AzureAD存取權杖的使用者,並呼叫我們的PAT生命週期管理API。
請遵循兩個範例中的其中一個來開始:
複製我們的範例PythonFlask應用程式,並使用您的租使用者與ADO組織進行設定
在Azure入口網站中為您選擇的語言產生範例應用程式,並針對PAT生命週期進行設定管理API
複製我們的PythonFlaskweb應用程式
我們已為您提供此API的範例PythonFlaskweb應用程式,您可以在GitHub下載該應用程式,並可將其設定為與您的AzureAD租使用者和AzureDevOps組織搭配使用。
範例應用程式會使用MSALauthentication程式碼流程來取得AzureAD存取權杖。
重要
建議您在GitHub上開始使用範例PythonFlaskweb應用程式,但如果您想要使用不同的語言或應用程式類型,請使用[快速入門]選項來重新建立對等的測試應用程式。
複製範例應用程式之後,請遵循存放庫讀我檔案中的指示。
讀我檔案說明如何在您的AzureAD租使用者中註冊應用程式、設定範例以使用您的AzureAD租使用者,以及執行複製的應用程式。
產生快速入門Azure入口網站應用程式
相反地,您可以在Azure入口網站的應用程式頁面上,使用[快速入門]選項,以產生的MSAL程式碼產生範例應用程式。
快速入門測試應用程式會遵循授權碼流程,但會使用MicrosoftGraphAPI端點。
使用者將必須更新應用程式的設定,以指向PAT生命週期管理API的端點。
若要遵循此方法,請在AzureAD開發檔首頁上,依照您選擇的應用程式類型的快速入門指示進行。
我們將逐步解說PythonFlask快速入門應用程式完成此操作的範例。
範例:開始使用PythonFlask快速入門應用程式
當您在具有有效Azure訂用帳戶的AzureAD租使用者中註冊您的應用程式之後,請在Azure入口網站中的AzureActiveDirectory-應用程式註冊下,流覽至您註冊的應用程式。
選取您的應用程式,並流覽至[API許可權]。
選取[新增許可權],然後選取[AzureDevOps檢查user_impersonation-選取[新增許可權]。
從左側導覽面板中選取[快速入門]。
選取您的應用程式類型:針對PythonFlask,選取[Web應用程式]。
選取您的應用程式平臺。
在本教學課程中,請選取[Python]。
確定您已符合必要的必要條件,然後允許Azure入口網站進行必要的變更,以設定您的應用程式。
回復url將是在應用程式建立時設定的重新導向url+"/getAToken"。
下載快速入門應用程式並解壓縮檔案。
安裝應用程式需求,並執行應用程式,以確保您擁有所有必要的相依性。
應用程式一開始會設定為點擊MicrosoftGraphAPI中的端點。
遵循下一節中的設定指示,瞭解如何將此端點變更為PAT生命週期管理API基底端點。
設定快速入門應用程式
當使用者下載並安裝快速入門應用程式之後,它就會設定為使用MicrosoftGraph的測試API端點。
我們必須修改產生的設定檔,讓它改為呼叫PAT生命週期管理API。
提示
在這些檔中,我們會交替使用集合和組織。
如果設定變數需要集合名稱,請將它取代為您的組織名稱。
若要這樣做,我們必須做一些事:
將適用于PAT生命週期管理api的ENDPOINTconfiguration變數更新為
將範圍設定變數更新為"499b84ac-1321-427f-aa17-267ca6975798/.default",以參考AzureDevOps資源及其所有範圍。
下列範例將示範我們如何針對我們在上一節中透過Azure入口網站所產生的快速入門PythonFlask應用程式,進行這項設定。
請務必遵循指示來保護用戶端密碼,這一開始會以純文字的形式插入應用程式佈建檔中。
最佳做法是從設定檔中移除純文字變數,並使用環境變數或AzureKeyVault來保護其應用程式的秘密。
相反地,您可以選擇使用憑證,而不是用戶端密碼。
如果應用程式最終會用於生產環境中,則建議使用[憑證]選項。
您可以在快速入門應用程式設定的最後一個步驟中,找到使用憑證的指示。
警告
請勿在實際執行的應用程式程式碼中留下純文字用戶端密碼。
範例:設定適用于PAT生命週期管理API的PythonFlask快速入門應用程式
當您下載快速入門應用程式、安裝其相依性,並測試它在您的環境中執行之後,請app_config.py在您選擇的編輯器中開啟該檔案。
檔案應該類似下列程式碼片段:為了清楚起見,已移除參考預設MicrosoftGraphAPI設定的批註:
importos
CLIENT_ID="YOUR_CLIENT_ID_HERE"
#Application(client)IDofappregistration
CLIENT_SECRET="YOUR_CLIENT_SECRET_HERE"
#Placeholder-foruseONLYduringtesting.
#Inaproductionapp,werecommendyouuseamoresecuremethodofstoringyoursecret,
#likeAzureKeyVault.Or,useanenvironmentvariableasdescribedinFlask'sdocumentation:
#https://flask.palletsprojects.com/en/1.1.x/config/#configuring-from-environment-variables
#CLIENT_SECRET=os.getenv("CLIENT_SECRET")
#ifnotCLIENT_SECRET:
#raiseValueError("NeedtodefineCLIENT_SECRETenvironmentvariable")
AUTHORITY="https://login.microsoftonline.com/YOUR_AAD_TENANT_ID_HERE"#Formulti-tenantapp
#AUTHORITY="https://login.microsoftonline.com/Enter_the_Tenant_Name_Here"
REDIRECT_PATH="/getAToken"
#UsedforforminganabsoluteURLtoyourredirectURI.
#TheabsoluteURLmustmatchtheredirectURIyouset
#intheapp'sregistrationintheAzureportal.
ENDPOINT='https://graph.microsoft.com/v1.0/users'
SCOPE=["User.ReadBasic.All"]
SESSION_TYPE="filesystem"
#Specifiesthetokencacheshouldbestoredinserver-sidesession
使用應用程式註冊的用戶端識別碼和用戶端密碼,將用戶端識別碼或用戶端密碼更新至您的應用程式。
在生產環境中,請務必使用環境變數、AzureKeyVault或切換至憑證來保護用戶端密碼。
CLIENT_ID="YOUR_CLIENT_ID_HERE"
#Application(client)IDofappregistration
CLIENT_SECRET="YOUR_CLIENT_SECRET_HERE"
#Placeholder-foruseONLYduringtesting.
#Inaproductionapp,werecommendyouuseamoresecuremethodofstoringyoursecret.
將ENDPOINT變數變更為您AzureDevOps的集合URL和API端點。
例如,如果是名為"testCollection"的集合,則值會是:
#Fillintheurltotheuser'sADOcollection+thePATlifecyclemanagementAPIendpointhere
ENDPOINT='https://vssps.dev.azure.com/{YOUR_COLLECTION_NAME_HERE}/_apis/Tokens/Pats?api-version=6.1-preview'
針對名為"testCollection"的集合,此端點會是:
ENDPOINT='https://vssps.dev.azure.com/testCollection/_apis/Tokens/Pats?api-version=6.1-preview'
變更SCOPE變數以參考AzureDevOpsapi資源;字元字串是AzureDevOpsapi的資源識別碼,而「預設」範圍則是指該資源識別碼的所有範圍。
SCOPE=["499b84ac-1321-427f-aa17-267ca6975798/.default"]
如果您的應用程式是針對特定的租使用者設定(而不是多租使用者設定),請使用變數的替代值AUTHORITY,在"Enter_the_Tenant_Name_Here"中新增特定的租使用者名稱。
#Forsingle-tenantapp:
AUTHORITY="https://login.microsoftonline.com/YOUR_AAD_TENANT_ID_HERE"
#Formulti-tenantapp:
AUTHORITY="https://login.microsoftonline.com/Enter_the_Tenant_Name_Here"
app_config.py使用您的CLIENT_ID、租使用者識別碼和集合URL,確認最終檔案是否符合下列各項。
基於安全性考慮,請確定已將CLIENT_SECRET移至環境變數、AzureKeyVault,或使用您已註冊之應用程式的憑證進行交換:
importos
CLIENT_ID="YOUR_CLIENT_ID_HERE"
#Application(client)IDofappregistration
#NotethattheCLIENT_SECREThasbeenremovedandmovedtoanenvironmentvariableorAzureKeyVault
AUTHORITY="https://login.microsoftonline.com/YOUR_AAD_TENANT_ID_HERE"#Formulti-tenantapp
#AUTHORITY="https://login.microsoftonline.com/Enter_the_Tenant_Name_Here"
REDIRECT_PATH="/getAToken"
#UsedforforminganabsoluteURLtoyourredirectURI.
#TheabsoluteURLmustmatchtheredirectURIyousetintheapp'sregistrationintheAzureportal.
ENDPOINT='https://vssps.dev.azure.com/testCollection/_apis/Tokens/Pats?api-version=6.1-preview'
#Usedtoconfigureuser'scollectionURLandthedesiredAPIendpoint
SCOPE=["499b84ac-1321-427f-aa17-267ca6975798/.default"]
#Means"AllscopesfortheAzureDevOpsAPIresource"
SESSION_TYPE="filesystem"
#Specifiesthetokencacheshouldbestoredinserver-sidesession
重新執行應用程式以測試您是否可以取得要求使用者的所有PAT權杖。
確認您擁有之後,您可以隨意修改的內容'app.py'和'ms-identity-python-webapp-master\templates'目錄,以支援將要求傳送至其他PAT生命週期管理API端點。
如需已修改為支援所有PAT生命週期管理API端點要求的PythonFlask快速入門應用程式範例,請參閱GitHub上的這個範例存放庫。
自動重新整理AzureAD存取權杖
一旦正確設定應用程式,且使用者已取得存取權杖,權杖最多可使用一小時。
上述兩個範例中提供的MSAL程式碼會在權杖到期後自動重新整理。
重新整理權杖可讓使用者不需要再次登入並取得新的授權碼。
不過,使用者在重新整理權杖到期之後,可能需要再次登入90天。
探索PAT生命週期管理API
在上述GitHub範例應用程式和快速入門應用程式中,應用程式已預先設定為使用您取得的AzureAD權杖提出要求。
若要深入瞭解端點、它們接受的參數和回應中傳回的參數,請參閱API參考檔。
常見問題集
問:為什麼需要使用AzureAD權杖進行驗證?為什麼PAT不足?
答:在此PAT生命週期管理API中,我們開啟了建立新Pat和撤銷現有Pat的能力。
在錯誤的手中,惡意執行者可以使用此API,為您組織的ADO資源建立多個進入點。
藉由強制執行AzureADauthentication,我們希望此強大的API更安全,以免遭到未經授權的使用。
問:我是否需要具有有效Azure訂用帳戶的AzureAD租使用者,才能使用此API?
答:可惜的是,此API僅適用于屬於具有有效Azure訂用帳戶之AzureAD租使用者的使用者。
問:我可以針對另一個語言/架構/應用程式類型取得此範例應用程式的範例嗎?
答:我們愛您想要以您選擇的語言來使用API!如果您有範例的要求,請前往我們的開發Community查看是否有其他人有共用的範例。
如果您有想要與較大的AzureDevOps物件分享的範例應用程式,請讓我們知道,我們可以更廣泛地在這些檔上進行迴圈處理!
問:此權杖API和權杖管理API之間有何差異?
答:此權杖API和權杖管理員api在類似的情況下,會提供不同的使用案例和物件:
此權杖API大多適用于想要管理在自動化管線中所擁有之Pat的使用者。
此API允許。
它讓您能夠建立新的權杖,並更新現有的權杖。
權杖管理員API適用于組織系統管理員。
系統管理員可以使用此API來取得和撤銷OAuth授權,其中包括個人存取權杖,(其組織中使用者的Pat)和自我描述會話權杖。
問:如何透過API重新產生/旋轉Pat?我在UI中看到該選項,但是我在API中看不到類似的方法。
答:很好的問題!UI中提供的「重新產生」功能實際上會完成一些動作,這些動作會透過API完全複製。
若要旋轉您的PAT,您需要:
使用GET呼叫瞭解PAT的中繼資料,
使用POST呼叫,以舊的pat中繼資料建立新的pat。
使用DELETE呼叫撤銷舊的PAT
問:當我嘗試繼續使用此應用程式時,我看到「需要系統管理員核准」快顯視窗。
如何在不需要系統管理員核准的情況下使用此應用程式?
答:您的租使用者似乎已設定安全性原則,要求您的應用程式必須授與許可權,才能存取組織中的資源。
目前,在此租使用者中繼續使用此應用程式的唯一方法,是先要求系統管理員授與許可權給應用程式,您才能使用該應用程式。
下一步
瞭解PAT生命週期管理API端點
本文內容
延伸文章資訊
- 1存取權杖- Facebook 登入- 文件
這個存取權杖會和每一個API 呼叫一起傳遞,以證明此呼叫是由特定用戶從特定的應用程式所發出。 Facebook SDK for Javascript 會自動在瀏覽器中處理存取權杖儲存和登入狀態 ...
- 2API 權杖管理
您可以產生和管理用於安全存取安全資訊和事件管理(SIEM) 整合API 的API 權杖。
- 3使用API 管理個人存取權杖- Azure DevOps
Azure AD 權杖是比使用pat 更安全的驗證機制。 基於此API 建立和撤銷Pat 的能力,我們想要確保只將這類強大的功能提供給允許的使用者。 Microsoft ...
- 4產生伺服器端API的存取權杖
將適當的伺服器對伺服器API呼叫從非AEM應用程式呼叫至AEM作為Cloud Service環境,包括標題中的存取權杖。 因此,對於「授權」標頭,請使用值 "Bearer < ...
- 5[Facebook] 使用新版圖形API 測試工具取得存取權杖| 一介資男
在開始取得權杖前,先了解這是什麼會比較有概念下一步。 使用存取權杖(Access Token)的意義等同於使用者使用帳號密碼登入平台,而平台有權限管理的 ...