共用方式為


使用 Akamai Enterprise Application Access 設定 Azure Active Directory B2C 以進行 SSO 和保護混合式存取

在本範例教學課程中,瞭解如何整合 Azure Active Directory B2C (Azure AD B2C) 驗證與 Akamai 企業應用程式存取。 Akamai 企業應用程式存取是 零信任 網路存取 (ZTNA) 解決方案,可安全地遠端訪問位於私人數據中心的新式和舊版應用程式。 Akamai 企業應用程式存取會與識別提供者 (IdP) Azure AD B2C 同盟,以驗證使用者,然後使用其授權原則對身分識別、裝置、應用程式和要求內容進行持續評估,再允許存取私人應用程式。

此功能僅適用於自定義原則。 針對安裝步驟,請在上述選取器中選取 [自定義原則 ]。

必要條件

若要開始使用,您需要:

案例描述

在此案例中,您會在用戶嘗試存取 Akamai 企業應用程式存取保護的私人應用程式時,為終端使用者啟用 Azure AD B2C 驗證。

此整合所涉及的元件如下:

  • Azure AD B2C:負責驗證終端使用者的 SAML 識別提供者。

  • Akamai 企業應用程式存取:負責使用持續 ZTNA 原則強制執行來保護私人應用程式的存取權的 ZTNA 雲端服務。

  • Akamai Enterprise Application Access 連線 or:部署在私人數據中心的虛擬設備。 它可讓您安全地連線到私人應用程式,而不需要開啟任何數據中心輸入防火牆埠。

  • 應用程式:部署在您私人資料中心的服務或應用程式,使用者需要存取此數據中心。

使用者會向 Azure AD B2C(作為 SAML IdP)進行驗證,以 SAML 判斷提示回應 Akamai 企業應用程式存取(服務提供者)。 Akamai 企業應用程式存取會從 SAML 判斷提示對應資訊,並建構 OpenID 宣告或插入包含使用者相關信息的 HTTP 標頭。 Akamai 企業應用程式存取接著會將此項目傳遞至可透過 Akamai 企業應用程式存取連接器存取的應用程式。 在我們的範例中,應用程式會顯示這些標頭的內容。 在 OIDC 應用程式的使用案例中,它會顯示使用者的宣告。

下圖顯示 Akamai 企業應用程式存取 (EAA) 如何與 Azure AD B2C 整合。

Screenshot shows the integration architecture.

  1. 用戶嘗試使用 Akamai 企業應用程式存取中註冊的應用程式外部 URL,存取裝載於私人資料中心的應用程式。

  2. Akamai 企業應用程式存取會將未經驗證的使用者重新導向至 Azure AD B2C 以進行驗證。

  3. 成功驗證之後,Azure AD B2C 會使用 SAML 判斷提示將使用者重新導向回 Akamai 企業應用程式存取。

  4. Akamai 企業應用程式存取會使用 SAML 判斷提示中的身分識別資訊來識別使用者,並判斷使用者是否允許存取要求的應用程式。

  5. Akamai 企業應用程式存取會建構 OIDC 宣告,或插入傳送至應用程式的 HTTP 標頭。

  6. 應用程式會使用這項資訊來識別已驗證的使用者,併為使用者建立應用程式會話。

使用 Akamai 企業應用程式存取上線

若要開始使用 Akamai 企業應用程式存取,請參閱 Akamai 企業應用程式存取入門指南

步驟 1 - 在 Akamai 企業應用程式存取中將 Azure AD B2C 新增為 SAML IdP

Akamai 企業應用程式存取支援 SAML 同盟與 Azure AD B2C 等雲端 IdP。 將 Azure AD B2C 新增為 Akamai 企業應用程式存取中的第三方 SAML IdP

  1. 登入 Enterprise Center https://control.akamai.com/

  2. 在 [企業中心] 導覽功能表中,選取 [ 應用程式存取 > 身分 & 識別用戶 > 識別提供者]。

  3. 選取 [新增識別提供者][+]。

  4. 輸入名稱、描述,然後選取提供者類型作為 第三方 SAML

  5. 選取 [繼續]。 [識別提供者設定] 頁面隨即出現。

  6. [設定> 一般輸入身分識別伺服器的 URL。 您可以選取 [使用 Akamai 網域] 或 [使用您的網域]。 如果您使用自己的網域,請使用自我簽署憑證,或使用上傳的自定義憑證。

  7. 在 [ 驗證 ] 中,輸入與上一個步驟在 [一般] 和 [選取 儲存] 中所定義的相同 URL。

    Screenshot shows the akamai settings.

步驟 2 - 在 Azure AD B2C 中註冊 SAML 應用程式

  1. 從 GitHub 取得自定義原則入門套件,然後使用您的 Azure AD B2C 租使用者名稱更新 LocalAccounts 入門套件中的 XML 檔案:

    • 下載 .zip 檔案 或複製存放庫:

      git clone https://github.com/Azure-Samples/active-directory-b2c-custom-policy-starterpack
      
    • 在 LocalAccounts 目錄中的所有檔案中,以 Azure AD B2C 租使用者的名稱取代字串yourtenant。 例如,如果 B2C 租使用者的名稱是 fabrikam,則的所有實體都會 yourtenant.onmicrosoft.com 變成 fabrikam.onmicrosoft.com

  2. 建立 Azure AD B2C 的簽署憑證,以簽署傳送至 Akamai 企業應用程式存取的 SAML 回應:

    a. 取得憑證。 如果您還沒有憑證,您可以使用自我簽署憑證。

    b. 在 Azure AD B2C 租使用者中上傳憑證 。 記下名稱,因為後續步驟中所述需要 TechnicalProfile 的名稱。

  3. 讓您的原則能夠與 SAML 應用程式連線。

    a. 在自定義原則入門套件中開啟 LocalAccounts\TrustFrameworkExtensions.xml尋找 ClaimsProviders 元素。 如果不存在,請將它新增至根元素底下, TrustFrameworkPolicy 並新增下列 XML 代碼段以實作您的 SAML 回應產生器:

     <ClaimsProvider>
       <DisplayName>Akamai</DisplayName>
       <TechnicalProfiles>
         <!-- SAML Token Issuer technical profile -->
         <TechnicalProfile Id="AkamaiSaml2AssertionIssuer">
           <DisplayName>Token Issuer</DisplayName>
           <Protocol Name="SAML2" />
           <OutputTokenFormat>SAML2</OutputTokenFormat>
           <Metadata>
             <Item Key="IssuerUri">https://<REPLACE>.login.go.akamai-access.com/saml/sp/response</Item>
           </Metadata>
           <CryptographicKeys>
             <Key Id="SamlAssertionSigning" StorageReferenceId="B2C_1A_AkamaiSAMLSigningCert" />
             <Key Id="SamlMessageSigning" StorageReferenceId="B2C_1A_AkamaiSAMLSigningCert" />
           </CryptographicKeys>
           <InputClaims />
           <OutputClaims />
           <UseTechnicalProfileForSessionManagement ReferenceId="SM-Saml-issuerAkamai" />
         </TechnicalProfile>
         <!-- Session management technical profile for SAML-based tokens -->
         <TechnicalProfile Id="SM-Saml-issuerAkamai">
           <DisplayName>Session Management Provider</DisplayName>
           <Protocol Name="Proprietary" Handler="Web.TPEngine.SSO.SamlSSOSessionProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
           <Metadata>
             <Item Key="IncludeSessionIndex">false</Item>
             <Item Key="RegisterServiceProviders">false</Item>
           </Metadata>
         </TechnicalProfile>
       </TechnicalProfiles>
     </ClaimsProvider>
    

    b. issuerUri將取代為 Akamai 企業應用程式存取設定>一般在步驟 1 中定義的 Akamai URL

    • 例子 <Item Key="IssuerUri">https://fabrikam.login.go.akamai-access.com/saml/sp/response</Item>

    • 將B2C_1A_AkamaiSAMLSigningCert取代為上傳的原則金鑰名稱。

步驟 3 - 建立針對 SAML 設定的註冊或登入原則

  1. 在入門套件的工作目錄中建立檔案的 SignUpOrSignin.xml 複本,並以新的名稱加以儲存。 本文使用 SignUpOrSigninSAML.xml 作為範例。 此檔案是信賴憑證者的原則檔案。 預設會設定為發出 JWT 回應。

  2. SignUpOrSigninSAML.xml 慣用的編輯器中開啟檔案。

  3. 使用 Azure AD B2C 租使用者的名稱更新 tenant-name ,並將 PolicyId 原則的 和 PublicPolicyUri 值變更為 B2C_1A_signup_signin_samlhttp://<tenant-name>.onmicrosoft.com/B2C_1A_signup_signin_saml

    <TrustFrameworkPolicy
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
    PolicySchemaVersion="0.3.0.0"
    TenantId="tenant-name.onmicrosoft.com"
    PolicyId="B2C_1A_signup_signin_saml"
    PublicPolicyUri="http://<tenant-name>.onmicrosoft.com/B2C_1A_signup_signin_saml">
    
  4. 在使用者旅程結束時,Azure AD B2C 包含一個步驟 SendClaims 。 此步驟參考令牌簽發者技術配置檔。 若要發出 SAML 回應,而不是預設 JWT 回應,請修改SendClaims步驟以參考新的 SAML 令牌簽發者技術設定檔 。 Saml2AssertionIssuer

    在元素前面 <RelyingParty> 新增下列 XML 代碼段。 此 XML 會覆寫使用者旅程圖中的 SignUpOrSignIn 協調流程步驟 4,假設您使用的是 LocalAccount 自定義原則入門套件。

    如果您從入門套件中的不同資料夾開始,或新增或移除協調流程步驟來自定義使用者旅程圖,請確定 元素中的 order 數字對應至令牌簽發者步驟的使用者旅程圖中指定的數位。 例如,在其他入門套件資料夾中,對應的步驟編號為 7,6 SocialAndLocalAccounts則為 SocialAccounts,而 9 則為 SocialAndLocalAccountsWithMfa

    <UserJourneys>
    <UserJourney Id="SignUpOrSignIn">
      <OrchestrationSteps>
        <OrchestrationStep Order="4" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="AkamaiSaml2AssertionIssuer"/>
      </OrchestrationSteps>
    </UserJourney>
    </UserJourneys>
    

    信賴憑證者元素會決定您的應用程式所使用的通訊協定。 預設值為 OpenId。 元素 Protocol 必須變更為 SAML。 輸出宣告會建立 SAML 判斷提示的宣告對應。

    以下列技術配置檔 XML 取代 元素中的<RelyingParty>整個<TechnicalProfile>專案。

     <TechnicalProfile Id="PolicyProfile">
       <DisplayName>PolicyProfile</DisplayName>
       <Protocol Name="SAML2"/>
       <OutputClaims>
         <OutputClaim ClaimTypeReferenceId="displayName" />
         <OutputClaim ClaimTypeReferenceId="givenName" />
         <OutputClaim ClaimTypeReferenceId="surname" />
         <OutputClaim ClaimTypeReferenceId="email" DefaultValue="" />
         <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="" />
         <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="objectId"/>
       </OutputClaims>
       <SubjectNamingInfo ClaimType="objectId" ExcludeAsClaim="true"/>
     </TechnicalProfile>
    

    信賴憑證者的最終原則檔案看起來應該像下列 XML 程式代碼:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <TrustFrameworkPolicy
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"
     xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"
     PolicySchemaVersion="0.3.0.0"
     TenantId="fabrikam.onmicrosoft.com"
     PolicyId="B2C_1A_signup_signin_saml"
     PublicPolicyUri="http://fabrikam.onmicrosoft.com/B2C_1A_signup_signin_saml">
     <BasePolicy>
       <TenantId>fabrikam.onmicrosoft.com</TenantId>
       <PolicyId>B2C_1A_TrustFrameworkExtensions</PolicyId>
     </BasePolicy>
    
     <UserJourneys>
       <UserJourney Id="SignUpOrSignIn">
         <OrchestrationSteps>
           <OrchestrationStep Order="7" Type="SendClaims" CpimIssuerTechnicalProfileReferenceId="AkamaiSaml2AssertionIssuer"/>
         </OrchestrationSteps>
       </UserJourney>
     </UserJourneys>
     <RelyingParty>
       <DefaultUserJourney ReferenceId="SignUpOrSignIn" />
       <TechnicalProfile Id="PolicyProfile">
         <DisplayName>PolicyProfile</DisplayName>
         <Protocol Name="SAML2"/>
         <OutputClaims>
           <OutputClaim ClaimTypeReferenceId="displayName" />
           <OutputClaim ClaimTypeReferenceId="givenName" />
           <OutputClaim ClaimTypeReferenceId="surname" />
           <OutputClaim ClaimTypeReferenceId="email" DefaultValue="" />
           <OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="" />
           <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="objectId"/>
         </OutputClaims>
         <SubjectNamingInfo ClaimType="objectId" ExcludeAsClaim="true"/>
       </TechnicalProfile>
     </RelyingParty>
     </TrustFrameworkPolicy>
    

注意

您可以遵循這個相同的程式來實作其他類型的流程,例如登入、密碼重設或配置檔編輯流程。

步驟 4 - 上傳您的原則

儲存您的變更,TrustFrameworkBase.xml並將 新的TrustFrameworkExtensions.xmlSignUpOrSigninSAML.xml原則檔案上傳至 Azure 入口網站。

  1. 登入 Azure 入口網站

  2. 如果您有多個租使用者的存取權,請選取頂端功能表中的 設定 圖示,從 [目錄 + 訂用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。

  3. Azure 入口網站 中,搜尋並選取 [Azure AD B2C]。

  4. 在 [原則] 底下,選取 [ 身分識別體驗架構]。 選取 [ 上傳自定義原則],然後依下列順序上傳您變更的兩個原則檔案:

    • 基底檔案,例如 TrustFrameworkBase.xml
    • 擴充原則,例如 TrustFrameworkExtensions.xml
    • 然後是信賴憑證者原則,例如 SignUpOrSigninSAML.xml

步驟 5 - 下載 Azure AD B2C IdP SAML 元數據

上傳原則檔案之後,Azure AD B2C 會使用組態資訊來產生應用程式將使用的識別提供者 SAML 元數據檔。 SAML 元數據檔包含服務的位置,例如登入方法、註銷方法和憑證。

  • Azure AD B2C 原則元數據位於下列 URL: https://<tenant-name>.b2clogin.com/<tenant-name>.onmicrosoft.com/<policy-name>/samlp/metadata

  • 將 取代 <tenant-name> 為您的 Azure AD B2C 租使用者名稱。 將 取代 <policy-name> 為原則的名稱(ID)。 以下是範例:https://fabrikam.b2clogin.com/fabrikam.onmicrosoft.com/B2C_1A_signup_signin_saml/samlp/metadata

下載 SAML 中繼資料,並將其儲存在您的裝置本機上。 需要執行下列步驟才能完成 Akamai 企業應用程式存取中的設定。

步驟 6 - 在 Azure AD B2C 中註冊 Akamai 企業應用程式存取應用程式

若要讓 Azure AD B2C 信任 Akamai 企業應用程式存取,請建立 Azure AD B2C 應用程式註冊。 註冊包含組態資訊,例如應用程式的中繼資料端點。

  1. 登入 Azure 入口網站

  2. 如果您有多個租使用者的存取權,請選取 頂端功能表中的 [設定 ] 圖示,從 [目錄 + 訂 用帳戶] 功能表切換至您的 Azure AD B2C 租使用者。

  3. 在左側功能表上,選取 [Azure AD B2C ]。 或者,選取 [ 所有服務 ],然後搜尋並選取 [Azure AD B2C ]。

  4. 選取 [應用程式註冊],然後選取 [新增註冊]

  5. 輸入 應用程式的 [名稱 ]。 例如,輸入 Akamai B2C 企業應用程式存取

  6. 在 [支援的帳戶類型 ] 下 ,選取 [僅限此組織目錄中的帳戶] (僅限 B2C - 單一租使用者)。

  7. 在 [重新導向 URI] 下,選取 [Web ],然後在步驟 1 輸入 Akamai 企業應用程式存取 設定\一般 中定義的 Akamai URL。 例如: https://fabrikam.login.go.akamai-access.com/saml/sp/response

  8. 選取註冊

步驟 7 - 在 Azure AD B2C 中設定 Akamai 企業應用程式存取應用程式

針對 SAML,您必須在應用程式註冊的資訊清單中設定數個屬性。

  1. Azure 入口網站 中,移至您在步驟 3 建立的應用程式註冊。

  2. 在 [管理] 底下 ,選取 [ 資訊清單 ] 以開啟資訊清單 編輯器。 然後修改下一節所述的屬性。

新增識別碼

當 Akamai 企業應用程式存取 SAML 應用程式向 Azure AD B2C 提出要求時,SAML 驗證要求會包含 Issuer 屬性。 此屬性的值通常與應用程式的中繼資料 entityID 值相同。 Azure AD B2C 會使用此值來查閱目錄中的應用程式註冊,並讀取設定。 若要讓此查閱成功, identifierUri 您必須在應用程式註冊資訊清單中填入符合 Issuer 屬性的值。

Screenshot shows the b2c saml configuration.

在註冊資訊清單中,尋找 identifierURIs 參數,並新增 步驟 2,Azure AD B2C ClaimsProvider 中所 定義的 IssuerURI 值。

範例:

"identifierUris": [
		"https://fabrikam.login.go.akamai-access.com/saml/sp/response"
	],

此值會與在應用程式的 SAML AuthN 要求中設定 EntityId 的值相同,以及 entityID 應用程式中繼資料中的值。 您也需要尋找 參數, accessTokenAcceptedVersion 並將值設定為 2

重要

如果您未將 更新 accessTokenAcceptedVersion2 ,您將會收到需要已驗證網域的錯誤訊息。

步驟 8 - 在 Akamai 企業應用程式存取中設定 Azure AD B2C IdP 的驗證設定

使用信賴憑證者 URL 等驗證資訊更新 Akamai 企業應用程式存取 Azure AD B2C IdP。

  1. 登入 Enterprise Center https://control.akamai.com/

  2. 在 [企業中心] 導覽功能表中,選取 [ 應用程式存取 > 身分 & 識別使用者 > 識別提供者 ]。

  3. 選取在步驟 1 建立的識別提供者名稱。

  4. 上傳您在步驟 5 中下載的 Azure AD B2C SAML 中繼資料檔案。

  5. 若要上傳 metadata.xml 檔案,請選取 [ 選擇檔案 ]。

    Screenshot shows the metadata file.

  6. 選取 [ 儲存並部署 ]。

步驟 9 - 在私人資料中心部署 Akamai Enterprise Application Access 連線ors

若要啟用私人應用程式的存取權,請在應用程式所在的私人資料中心部署一或多個 Akamai 企業應用程式存取連接器 。 請確定連接器可以連線到您的私人應用程式,並具有 Akamai 雲端的輸出存取權。

步驟 10 - 在私人應用程式的 Akamai 企業應用程式存取中定義存取應用程式

  1. 在 Akamai 企業應用程式存取中定義及部署存取應用程式

  2. 當您定義存取應用程式時

選項 1:HTTP 標頭

在此範例中,我們將使用顯示標頭 docker header-demo-app 的應用程式 。 在私人環境中部署應用程式且連接器能夠存取應用程式之後,請遵循 Akamai 檔 設定存取應用程式的自訂 HTTP 標頭,建立自訂 HTTP 類型應用程式

  1. 在 [驗證] 中,選取在先前步驟中建立的 Azure AD B2C SAML IdP。

Screenshot shows the akamai authn application.

  1. 在應用程式的 [ 進階 ] 區段中,在成功驗證時,將 HTTP 標頭對應至 SAML 回應中 Azure AD B2C 所發出的 SAML 屬性。

範例:

標頭名稱 屬性
ps-sso-first http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
ps-sso-last http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname
ps-sso-EmailAddress emailaddress
ps-sso-uid objectId

Screenshot shows the akamai header app mapping.

為您所建立的自訂 HTTP 類型 Web 應用程式選取 Akamai URL,以測試應用程式。

Screenshot shows the akamai header app results.

選項 2:OpenID 連線

在此範例中,我們將使用 使用 Open Web Interface for .NET (OWIN) 中介軟體和Microsoft 身分識別平臺來登入使用者的 ASP.NET MVC Web 應用程式

  1. 在使用先前步驟建立的 Azure AD B2C SAML IdP ,將 OIDC 設定為 SAML 橋接。

    Screenshot shows the akamai oidc app oidc settings.

  2. 在設定 Access 應用程式的 OpenID 連線 之後 ,建立自訂 HTTP 類型應用程式。

  3. 在 [驗證] 中,選取根據 HTTP 標頭應用程式在先前步驟中建立的 Azure AD B2C SAML IdP。

    Screenshot shows the akamai authn app settings.

  4. 在 [進階 ] 中 ,選取 [OpenID 連線 1.0 ] 作為驗證機制,然後選取 [ 儲存 ]。

    Screenshot shows the akamai oidc app authentication settings.

  5. 新的 OpenID 索引標籤隨即出現,複製稍後在設定 OWIN 元件以測試應用程式時步驟中所需的探索 URL。

    Screenshot shows the akamai oidc app settings.

  6. 在 [ 宣告] 區段中,定義 Akamai 針對 OIDC 應用程式發出的宣告,在成功驗證時,將其值對應至 SAML 回應中 Azure AD B2C 所提供的 SAML 屬性。 在 Azure AD B2C SAML IdP 中將 OIDC 設定為 SAML 橋接時 ,這些宣告必須對應您在上一個步驟中定義的專案。

    Screenshot shows the akamai oidc app claim settings.

  7. 將啟動類別取代為 ASP.NET MVC Web 應用程式中 的下列程式碼。

    這些少數變更會設定授權碼流程授與,授權碼將會在應用程式的權杖端點兌換權杖,並引進中繼資料位址來設定探索端點,以從 Akamai 取得中繼資料。

    public class Startup
    {
         // The Client ID is used by the application to uniquely identify itself to Azure AD.
         string clientId = System.Configuration.ConfigurationManager.AppSettings["ClientId"];
    
         //App Client Secret to redeem the code for an access token
         string ClientSecret = System.Configuration.ConfigurationManager.AppSettings["ClientSecret"];
    
         // RedirectUri is the URL where the user will be redirected to after they sign in.
         string redirectUri = System.Configuration.ConfigurationManager.AppSettings["RedirectUri"];
    
         // PostLogoutRedirectUri is the URL where the user will be redirected to after they sign out
         string PostLogoutRedirectUri = System.Configuration.ConfigurationManager.AppSettings["PostLogoutRedirectUri"];
    
         //Authority is the URL for authority
         string authority = System.Configuration.ConfigurationManager.AppSettings["Authority"];
    
         //discovery endpoint for obtaining metadata
         string MetadataAddress = System.Configuration.ConfigurationManager.AppSettings["MetadataAddress"];
    
    
         /// <summary>
         /// Configure OWIN to use OpenIdConnect
         /// </summary>
         /// <param name="app"></param>
         public void Configuration(IAppBuilder app)
       {
         app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
    
         app.UseCookieAuthentication(new CookieAuthenticationOptions());
         app.UseOpenIdConnectAuthentication(
             new OpenIdConnectAuthenticationOptions
             {
                 // Sets the ClientId, authority, RedirectUri as obtained from web.config
                 ClientId = clientId,
                 Authority = authority,
                 RedirectUri = redirectUri,
                 MetadataAddress = MetadataAddress,
                 // PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it is using the home page
                 PostLogoutRedirectUri = redirectUri,
                 RedeemCode = true,
                 Scope = OpenIdConnectScope.OpenIdProfile,
                 // ResponseType is set to request the code id_token - which contains basic information about the signed-in user
                 ResponseType = OpenIdConnectResponseType.Code,
                  // OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to OnAuthenticationFailed method
                 Notifications = new OpenIdConnectAuthenticationNotifications
                 {
                     AuthenticationFailed = OnAuthenticationFailed
                 }
             }
         );
     }
    
     /// <summary>
     /// Handle failed authentication requests by redirecting the user to the home page with an error in the query string
     /// </summary>
     /// <param name="context"></param>
     /// <returns></returns>
     private Task OnAuthenticationFailed(AuthenticationFailedNotification<OpenIdConnectMessage, OpenIdConnectAuthenticationOptions> context)
     {
         context.HandleResponse();
         context.Response.Redirect("/?errormessage=" + context.Exception.Message);
         return Task.FromResult(0);
        }
    }
    
  8. 在檔案中 web.config 新增中繼資料位址,將 clientId、clientsecret、authority、redirectUri 和 PostLogoutRedirectUri 取代為 中的 appSettings Akamai 應用程式值。

    您可以在您在建立 的 HTTP Akamai 應用程式的 Discovery URL=MetadataAddress OpenID 索引標籤中,于上一個步驟 5 中找到這些值。 redirectUri 是 Akamai 連接器要解析為本機 OIDC 應用程式的本機位址。 Authority是您可以從檔 中找到 .well-known/openid-configuration 的authorization_endpoint。

    探索 URL: https://fabrikam.login.go.akamai-access.com/.well-known/openid-configuration

     <appSettings>
       <add key="ClientId" value="xxxxxxxxxxxxxxxxxx" />
       <add key="ClientSecret" value="xxxxxxxxxxxxxxxxxx" />
       <add key="Authority" value="https://fabrikam.login.go.akamai-access.com/oidc/oauth" />
       <add key="redirectUri" value="http://oidcapp.identity.mistermik.com/" />
       <add key="PostLogoutRedirectUri" value="https://oidc-test.go.akamai-access.com/" />
       <add key="MetadataAddress" value="https://fabrikam.login.go.akamai-access.com/.well-known/openid-configuration" />
     </appSettings>
    

    為所建立的自訂 HTTP 類型 Web 應用程式選取 Akamai URL,以測試應用程式。

    Screenshot shows the akamai oidc app results.

測試解決方案

  1. 使用 Akamai 企業應用程式存取中指定的外部 URL,流覽至應用程式 URL。

  2. 未經驗證的使用者會重新導向至 Azure AD B2C 登入頁面。

  3. 從頁面上的清單選取 IdP。

  4. 以使用者身分登入,並使用連結至 Azure AD B2C 的認證。

  5. 成功驗證之後,使用者將會重新導向回應用程式,並以使用者身分登入應用程式。

其他資源