簡體   English   中英

允許基於令牌的API訪問Azure App Service上的某些終結點

[英]Allow token based API access to some endpoints on Azure App Service

我有一個在Azure的應用程序服務上運行的NodeJS應用程序。 它由真實的人使用,並使用Active Directory身份驗證:

在此處輸入圖片說明

目前,未經身份驗證的請求將重定向到“直接活動登錄”頁面。 效果很好。

但是,我現在要求另一個應用程序(而不是人類程序)能夠訪問某些API端點-大概是通過某種令牌身份驗證來進行的。

我認為這樣做的選擇是:

  1. 使用內置的Azure內容。 這里有一個例子在這里如何有一個客戶端應用程序Azure的身份驗證到另一個,但我不認為這會為我工作,我的客戶端應用程序是不是一個Azure的應用程序。 因此,我需要任何東西(例如, curl請求)才能對我的應用進行身份驗證。 我在這里嗎? 天藍色是否為“非天藍色應用通過Azure應用進行身份驗證”內置了任何內容?

  2. 我可以在上面的屏幕快照中選擇“允許匿名請求(不執行任何操作)”選項,然后自己處理:實現api_tokens表,對於每個請求,請檢查API令牌(如果它是client_api/*端點),請檢查為任何其他終結點的Active Directory身份驗證用戶提供服務,如果未通過身份驗證,則將他們自己手動重定向到登錄頁面。

  3. 理想情況下,我可以說:如果請求是對client_api/*請求,則允許未經身份驗證的請求,然后我將檢查請求是否包含有效令牌,但對於所有其他請求,請像現在一樣進行操作-使用Active Directory身份驗證並重新-將未經身份驗證的請求自動定向到登錄頁面。

所以我的問題是:-我對auzure沒什么可做的選擇1)對我有用嗎? -有辦法做選項3)嗎? -如果沒有,我想留下選項2)-還是我沒有想到更好的方法?

我們已經對您的1)選項做了類似的操作,好消息是您的客戶端(調用API)不必托管在Azure中。

我們有一個自定義的CRM插件,需要調用對受Azure AD保護的API APP的調用,該過程相當冗長,但是可以正常工作(很久以前就進行了設置,因此我認為以下步驟是正確的):

創建在Azure內托管的自己的API,並確保將其作為應用程序在Azure AD中注冊(在Azure AD中->門戶中的應用程序注冊)

然后在Azure AD中創建一個新應用程序,將其命名為“客戶端AD應用程序”,並設置基本屬性和鍵等。

從現在開始,您的客戶端API實際上將充當“客戶端AD應用程序”。

然后,您需要通過將代理權限分配給受保護的API來從“客戶端AD應用程序”授予對API的訪問權限(同樣,只需在Azure AD的UI中執行此操作)。 您可以通過為新的“客戶端AD應用程序”應用分配“權限”來完成此操作(這對我來說並不直觀)

一旦設置了2個應用程序並分配了權限,則需要調用OAUTH API端點以獲取令牌,然后在后續對API的調用中使用該令牌。

其中大部分記錄在這里: https : //docs.microsoft.com/zh-cn/azure/active-directory/develop/active-directory-protocols-oauth-code

編輯: -

例如,我們對oauth端點的調用如下所示:

將POST請求發送到: https : //login.windows.net/[ tennant]/oauth2/ token ,標題如下:

  • client_id :(新AD應用程序的應用程序ID)
  • client_secret :(新廣告應用程序的秘密)
  • 資源:(您嘗試訪問的是哪個API端點-即您受保護的API)
  • 用戶名:有效的AD用戶名
  • 密碼:有效的AD密碼
  • grant_type:密碼(始終為“ password”)

這將為您提供如下響應:

{
    "token_type": "Bearer",
    "scope": "user_impersonation",
    "expires_in": "3600",
    "ext_expires_in": "0",
    "expires_on": "XXX",
    "not_before": "XXX",
    "resource": "...the resource you asked for...",
    "access_token": "...",
    "refresh_token": "..."
}

希望能幫助交配。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM