Table of contents
TOC
摺疊目錄
展開目錄

適用於開發人員廣告 FS 案例

Bill Mathers|上次更新日期: 2017/3/10
|
1 投稿人

適用於︰ Windows Server 2016

在 [廣告 FS 2016] 的 Windows Server 2016 的廣告 FS 可讓您可以新增的業界標準 OpenID 連接 OAuth 2.0 根據和驗證和授權到您開發應用程式和已驗證直接使用者廣告 FS 這些應用程式。

廣告 FS 2016 也支援 WS-聯盟 Ws-trust,並 SAML 通訊協定,以及設定檔我們已經支援之前的版本。 如果您是開發人員指導這些通訊協定興趣,請查看的文件。 本文會如何使用及於較新的通訊協定支援對焦。

為何要現代化驗證

時,您可以繼續使用 WS 同盟上使用廣告 FS 的登入,Ws-trust,並為您 SAML 通訊協定有之前,請使用較新的通訊協定,您會收到下列優點︰

  • 簡易和一致性
    • 使用相同的 Api 和的登入以便模式︰
      • 多個應用程式(伺服器、桌面、行動裝置版、瀏覽器)類型
      • 多個平台 (android,iOS、Windows)
      • 應用程式中的企業網路或裝載的雲端中
    • 使用您已可使用驗證使用者 Azure AD 的媒體櫃的
  • 彈性
    • 除了一般的使用者授權,例如讓更複雜案例︰
      • ? 3 腳登流向一個 web 應用程式或服務的另一個 web app 或服務存取資源,授權使用者。
      • ? 伺服器-流程舉辦層服務的存取端 API
      • ? JavaScript 以單頁模式應用程式] 選項
  • Industry 的支援
    • OAuth 2.0 和 OpenID 連接希望您使用愉快形使用量業界,因此知識種模式可協助您讓驗證和 Active Directory 環境和授權也

它的運作方式︰ 的基本資訊

您可以新增廣告 FS 現代化驗證您的應用程式使用的工具,以及您已可使用驗證使用者 Azure AD 的媒體櫃。

廣告 FS 案例中當然,這是廣告 FS 並不 Azure AD 做為身分提供者和授權的伺服器。 否則概念等均︰ 使用者提供認證,並取得權杖,直接或透過中間的存取權的資源。

最基本案例包含使用者或」資源擁有者」,互動存取 web 應用程式的瀏覽器︰

廣告 FS 開發人員

Web 應用程式之所以稱為「client」,因為為止資源存取預付碼要求授權伺服器 (廣告 FS)。 資源可能裝載本身 web app,或可能那樣 web API 網路或網際網路上的地方。 「資源擁有者」的使用者授權 client web 應用程式提供憑證授權伺服器收到該存取預付碼。

它的運作方式︰ 元件

OAuth 2.0 和 OpenID 連接案例廣告 FS 進行中使用的工具和身分提供者 Azure AD 時,您所使用的媒體櫃。 這些元件是︰

  • Active Directory 驗證媒體櫃 (ADAL): client 媒體櫃的幫助收集使用者認證,建立提交權杖要求及擷取的結果權杖。
  • (開放式網路介面.NET)OWIN middleware︰ 時 OWIN 為基礎的社群專案時,Microsoft 已伺服器一組側邊的程式庫保護 web 應用程式與 web OpenID 連接和 OAuth 2.0 與 Api

下圖顯示這些元件的角色︰

廣告 FS 開發人員

模型這些案例中 FS 2016 廣告

應用程式群組

若要顯示廣告 FS 原則在這些案例中的,我們已經引入新的概念稱為應用程式群組。 任意數量與應用程式的基本下列類型的組合,可包含應用程式的群組︰

應用程式群組 / 類型的應用程式描述角色
原生的應用程式有時稱為公用 client,這被要執行的電腦或裝置上和與使用者的互動 client app。從 [使用者存取權的授權伺服器 (廣告 FS) 要求權杖資源。 傳送 HTTP 要求保護使用語彙 HTTP 標頭的資源。
伺服器應用程式Web 應用程式的伺服器上執行,並透過瀏覽器的使用者通常可以存取。 因為它維持自己的認證或 client [密碼] 的功能,它通常稱為機密 client。從 [使用者存取權的授權伺服器 (廣告 FS) 要求權杖資源。 傳送 HTTP 要求保護使用語彙 HTTP 標頭的資源。
Web API結束資源使用者存取。 為新的「信賴的對象」表示這些的想法。使用權杖用取得

從廣告 FS 2012 R2 的不同

應用程式群組結合信任與授權廣告 FS 2012 R2 另行購買,公開信賴的對象、戶端,和應用程式權限的項目。

下表比較的對應的應用程式信任中建立物件廣告 FS 2012 R2 與廣告 FS 2016 的方法︰

在 Windows Server 2012 R2 的廣告 FS在 [PowerShell廣告 FS 管理
新增原生 clientAdd-AdfsClientNA MARA
為 client 新增伺服器應用程式Add-AdfsClientNA MARA
新增網站 API / 資源Add-AdfsRelyingPartyTrust建立信賴派對信任
廣告 FS 2016在 [PowerShell廣告 FS 管理
新增原生 clientAdd-AdfsNativeClientApplication新增原生的應用程式群組
為 client 新增伺服器應用程式Add-AdfsServerApplication新增伺服器應用程式群組
新增網站 API / 資源Add-AdfsWebApiApplication新增網站 API 應用程式群組

應用程式權限」及「同意

根據預設,戶端在群組中的應用程式可存取該相同的群組。 系統管理員不必設定特定應用程式權限。 應用程式群組也可讓系統管理員,若要指定允許,例如 openid 或 user_impersonation 範圍。 以下案例描述指定完全的領域所需的案例。

因為廣告 FS 使用系統管理員同意型號,所以不會提示使用者同意時存取資源。 設定的應用程式群組,系統管理員作用中提供所有應用程式的使用者代表同意。

支援的案例

下一節告訴您,我們在更多詳細資料中支援的案例。

使用權杖

這些案例中進行使用權杖的三種類型︰

  • id_token:用來表示使用者的身分 A JWT 預付碼。 Id_token 宣告 'aud] 或 [對象符合 client ID 的原生或伺服器應用程式。
  • access_token:使用 A JWT 預付碼和 OpenID 中的 Oauth 連接案例,並想来使用的資源。 此預付碼 'aud] 或 [對象宣告必須符合的識別碼或多個 Web API。
  • refresh_token:此預付碼提交來取代收集使用者認證,以提供體驗單一的登入。 此預付碼是發出和由廣告 FS,且不讀取戶端或資源。

原生 client Web api

此案例,可讓使用者撥打電話給廣告 FS 2016 保護的網路 API 原生 client 應用程式。

  • 原生 client 應用程式使用 ADAL 傳送授權,並要求廣告 FS,並提示您輸入認證必要時,使用者預付碼,然後傳送為 HTTP 標頭的 Web API 要求的結果預付碼
  • [僅供示範是此組件]Web API 可讀取 ClaimsPrincipal 物件 client,傳送存取預付碼的結果,傳送到 client 索賠項目。

通訊協定流程描述

  1. 原生 client 應用程式將會起始通話 ADAL 文件庫與流程。 這會觸發瀏覽器為基礎的廣告 FS HTTP 取得授權 endpoint:

授權的請求︰
取得 https://fs.contoso.com/adfs/oauth2/authorize 嗎?

參數
response_type」程式碼」
資源在應用程式群組中的網頁 API 資源點數 ID(識別碼)
client_id原生的應用程式中的應用程式群組編號 client
redirect_uri重新導向 URI 的原生的應用程式群組中的應用程式

授權要求回應︰
如果使用者尚未之前,請輸入認證提示使用者登入。
廣告 FS 回應」的程式碼」中參數 redirect_uri 查詢元件傳回驗證碼。 例如︰ HTTP 1.1 302 找不到的位置︰ http://redirect_uri:80/?code=<驗證碼>。

  1. 原生 client 然後將驗證碼,以及下列參數,傳送的廣告 FS 權杖點︰

權杖要求︰
張貼 https://fs.contoso.com/adfs/oautincludes

參數
grant_type「authorization_code」
驗證碼1 驗證碼
資源在應用程式群組中的網頁 API 資源點數 ID(識別碼)
client_id原生的應用程式中的應用程式群組編號 client
redirect_uri重新導向 URI 的原生的應用程式群組中的應用程式

權杖要求回應︰
廣告 FS access_token、與 refresh_token,本文 id_token HTTP 200 回應。

  1. 然後原生的應用程式會傳送上述回應 access_token 部分為 HTTP 要求授權標頭 web API。

單一登入的行為

中的後續 client 要求,(預設)1 小時 access_token 仍然會有效在該快取,並不會有新的要求觸發廣告 FS 任何傳輸。 自動將由 ADAL 快取從擷取 access_token。

存取預付碼到期之後,ADAL 將會自動傳送重新整理權杖根據的邀請給(略過授權要求自動)的廣告 FS 權杖結束點。
重新整理權杖要求︰
張貼 https://fs.contoso.com/adfs/oautincludes

參數
grant_type「refresh_token」
資源在應用程式群組中的網頁 API 資源點數 ID(識別碼)
client_id原生的應用程式中的應用程式群組編號 client
refresh_token重新整理預付碼發行的初始權杖要求回應廣告 FS

重新整理權杖要求回應︰
< SSO_period > 中重新整理預付碼時,此要求將會導致新的存取預付碼。 輸入認證,不會提示使用者。 如需有關 SSO 設定查看廣告 FS 單一登入設定

如果更新預付碼已過期,請要求不會與錯誤」invalid_grant」和「error_description」HTTP 401」MSIS9615: refresh_token 參數中收到更新預付碼已過期」。 此時,請 ADAL 自動提交新的授權要求看起來很像 #1 上述。

網頁瀏覽器 Web 應用程式

在本案例中,瀏覽器,使用者須存取資源裝載的 web 應用程式。
有兩個完成這項工作的案例。

機密 client 的 Oauth

本案例中為類似上述的是授權要求,後面權杖交換輸入驗證碼。 Web 應用程式(模型為伺服器應用程式中廣告 FS)初始授權要求透過瀏覽器,並交換預付碼的程式碼(由直接連接到廣告 FS)

通訊協定流程描述

  1. 授權要求瀏覽器,以廣告 FS 會傳送 HTTP 取得透過 Web App 初始化授權 endpoint
    授權要求:
    取得 https://fs.contoso.com/adfs/oauth2/authorize 嗎?
參數
response_type」程式碼」
資源在應用程式群組中的網頁 API 資源點數 ID(識別碼)
client_idClient Id 的原生的應用程式中的應用程式群組
redirect_uri重新導向 URI web 應用程式(伺服器應用程式)在群組中的應用程式

授權要求回應︰
如果使用者尚未之前,請輸入認證提示使用者登入。
廣告 FS 會做為回應,例如傳回做為「代碼」參數 redirect_uri,查詢元件中的驗證碼︰ HTTP 月 1.1 302 找不到的位置︰ https://webapp.contoso.com/?code=<驗證碼>。

  1. 上述 302 中,根據瀏覽器開始 HTTP 取得 web app,例如︰ 取得 http://redirect_uri:80/?code=<驗證碼>。

  2. Web app,有收到的驗證碼,此時起始廣告 FS 權杖 endpoint,傳送下列的要求
    權杖要求︰
    張貼 https://fs.contoso.com/adfs/oautincludes

參數
grant_type「authorization_code」
驗證碼從 2 上方的驗證碼
資源在應用程式群組中的網頁 API 資源點數 ID(識別碼)
client_idClient Id 的應用程式群組 web 應用程式(伺服器應用程式)
redirect_uri重新導向 URI web 應用程式(伺服器應用程式)在群組中的應用程式
client_secretWeb 應用程式(伺服器應用程式)中的應用程式群組的密碼。 注意︰ Client 認證不必會 client_secret。 廣告 FS 支援也使用憑證的取代或 Windows 整合式驗證的能力。

權杖要求回應︰
廣告 FS access_token、與 refresh_token,本文 id_token HTTP 200 回應。
宣告

  1. 網站或應用程式可能會消耗 access_token 回應的一部分上述(範例中的 [網路] app 本身裝載資源),然後將它傳送為 HTTP 要求授權首 API 網站。

單一登入的行為

存取預付碼仍然會有效(預設)1 小時 client 的快取中,而您可能會的想法,第二個要求將運作與上述的原生 client 案例相同的新要求將不會觸發廣告 FS 任何傳輸存取預付碼將會自動讀取從快取的 ADAL 時。 不過,則可能的 web 應用程式可以傳送不同的授權和權杖要求,透過不同的 URL 先前的連結,請與我們的範例。

若是如此,是讓發行新的驗證碼,而不會提示輸入認證使用者廣告 FS 廣告 FS 瀏覽器 SSO cookie。 Web app,然後廣告 FS 呼叫交換新取得新的存取憑證授權驗證碼。 輸入認證,不會提示使用者。

否則,如果網頁」app 是智慧足以知道是否已驗證的使用者,略過授權要求和兩個︰

  • 快取的存取預付碼過期,如果是擷取和使用,或
  • 可以要求權杖根據的要求傳送給廣告 FS 權杖 endpoint,如下所述

重新整理權杖要求︰
張貼 https://fs.contoso.com/adfs/oautincludes

參數
grant_type「refresh_token」
資源在應用程式群組中的網頁 API 資源點數 ID(識別碼)
client_idClient Id 的應用程式群組 web 應用程式(伺服器應用程式)
refresh_token重新整理發行的初始權杖要求回應廣告 FS 預付碼
client_secretWeb 應用程式(伺服器應用程式)在群組中的應用程式密碼

重新整理權杖要求回應︰
< SSO_period > 中重新整理預付碼時,此要求將會導致新的存取預付碼。 輸入認證,不會提示使用者。 如需有關 SSO 設定查看廣告 FS 單一登入設定

如果更新預付碼已過期,請要求不會與錯誤」invalid_grant」和「error_description」HTTP 401」MSIS9615: refresh_token 參數中收到更新預付碼已過期」。 此時,請 ADAL 自動提交新的授權要求看起來很像 #1 上述。

OpenID 連接︰ 混合流程

本案例中有類似上述的授權的請求起始網頁瀏覽器重新導向,以及從 web app 權杖 exchange 廣告 FS 的程式碼 app。 在本案例中不同的是廣告 FS 的問題 id_token 初始授權要求回應」的一部分。

通訊協定流程描述

  1. 授權要求瀏覽器,以廣告 FS 會傳送 HTTP 取得透過 Web App 初始化授權 endpoint

授權的請求︰
取得 https://fs.contoso.com/adfs/oauth2/authorize 嗎?

參數
response_type「代碼 + id_token」
response_mode「form_post」
資源在應用程式群組中的網頁 API 資源點數 ID(識別碼)
client_idClient Id 的應用程式群組 web 應用程式(伺服器應用程式)
redirect_uri重新導向 URI web 應用程式(伺服器應用程式)在群組中的應用程式

授權要求回應︰
如果使用者尚未之前,請輸入認證提示使用者登入。
廣告 FS 回應 HTTP 200 與表單包含以下為隱藏的項目︰

  • 代碼︰ 驗證碼
  • id_token︰ 包含宣告描述使用者驗證 JWT 預付碼
  • 表單自動張貼到 redirect_uri web 應用程式,傳送驗證碼與 id_token web app。
  1. Web app,有收到的驗證碼,此時起始廣告 FS 權杖 endpoint,傳送下列的要求

權杖要求︰
張貼 https://fs.contoso.com/adfs/oautincludes

參數
grant_type「authorization_code」
驗證碼從上方的驗證碼
資源在應用程式群組中的網頁 API 資源點數 ID(識別碼)
client_idClient Id 的應用程式群組 web 應用程式(伺服器應用程式)
redirect_uri重新導向 URI web 應用程式(伺服器應用程式)在群組中的應用程式
client_secretWeb 應用程式(伺服器應用程式)在群組中的應用程式密碼

權杖要求回應︰
廣告 FS access_token、與 refresh_token,本文 id_token HTTP 200 回應。

  1. 網站或應用程式可能會消耗 access_token 回應的一部分上述(範例中的 [網路] app 本身裝載資源),然後將它傳送為 HTTP 要求授權首 API 網站。

單一登入的行為

是單一登入問題與上述的 Oauth 2.0 機密 client 流程相同的。

代表

在本案例中,web 應用程式會使用來自使用者原始存取預付碼要求及其他 web app 會存取與使用者的 Web API 中取得其他存取預付碼。 這稱為「代表的「流程。

通訊協定流程描述

步驟 1 到 2 工作,就像是步驟 3 和先前流程中的 4。
在執行「步驟 3 主要的條件是 client_id 參數,Web app 2 client ID 必須符合資源點數 ID 的 Web API 答︰亦即,針對新預付碼交換存取預付碼的對象必須符合 client ID 實體要求的新預付碼。

相關的 content

查看廣告 FS 開發解說文章的完整清單,這提供逐步上使用的相關的流程。

© 2017 Microsoft