匯出 (0) 列印
全部展開

Windows Server 2008 R2 中 AD DS 的驗證機制保證逐步指南

更新日期: 2009年8月

適用於: Windows 7, Windows Server 2008 R2

本指南示範如何在 Windows Server® 2008 R2 作業系統中啟用 Active Directory® 網域服務 (AD DS) 的驗證機制保證。驗證機制保證是 Windows Server 2008 R2 AD DS 中新增的功能,當您將網域功能等級設為 Windows Server 2008 R2 時,便可加以使用。若啟用,則在登入期間使用憑證登入方法來驗證使用者的認證時,驗證機制保證會將系統管理員指定的全域群組成員資格新增到使用者的 Kerberos 權杖。這樣可以讓網路資源系統管理員根據使用者是否使用憑證登入方法進行登入以及所使用的憑證類型,來控制資源 (例如檔案、資料夾和印表機) 的存取。例如,使用者使用智慧卡進行登入時,使用者對網路資源的存取可以指定為與使用者未使用智慧卡 (即使用者藉由輸入使用者名稱和密碼來登入) 時的不同存取。

本文件主要章節包括:

技術檢閱

使用憑證登入方法 (例如,智慧卡登入) 並啟用驗證機制保證時,會在登入期間將額外的群組成員資格新增到使用者的存取權杖。系統管理員會從特定憑證發行原則 (內含於憑證範本) 與群組成員資格連結。因為不同的憑證發行原則可以連結到不同的群組,所以系統管理員可以識別在登入操作期間是否有使用到憑證。系統管理員也可以區分出不同的憑證類型。最後,這樣的作法可以讓資源系統管理員使用群組成員資格來保護資源的安全。不過,由於特定群組中的成員資格可以依據登入期間所使用的憑證類型來授與,因此可以依據使用者是否使用憑證登入以及登入期間所使用的憑證類型,來控制資源的存取。

例如,假設使用者 Todd 所擁有的智慧卡,其中的憑證是由內含中度保證憑證發行原則的憑證範本所發佈的。系統管理員已經將中度保證憑證發行原則連結至 Medium Access Level 群組。檔案共用經過設定後,Medium Access Level 群組具有讀取存取權,而另一個 High Access Level 群組則具有修改存取權。檔案共用不會設定其他任何的存取權限。當 Todd 使用他的智慧卡登入時,其存取權杖便包含額外的群組成員資格 (在此情況下為 Medium Access Level 群組)。Todd 接著會被授與檔案共用的讀取存取權。如果 Todd 沒有使用智慧卡登入,就無法存取檔案共用。如果使用者 Cassie 擁有的智慧卡,內含的憑證是由具備憑證發行原則 (連結至 High Access Level 群組) 的憑證範本所發行,則當 Cassie 使用智慧卡登入時,便具有檔案共用的修改權限。

您也可以使用 Active Directory Federation Services (AD FS) 樹系間所宣告,使用者存取權杖中所指定的額外群組成員資格,用來授與各樹系間的各種存取等級。您可以將此宣告與其他宣告結合,進一步限制同盟資源的存取。

驗證機制保證的需求

若要完成本指南中的所有步驟,您必須先完成《Windows Server 2008 R2 中的 AD FS 逐步指南》(http://go.microsoft.com/fwlink/?LinkId=133009) 裡的所有步驟。不過,您可以使用其他符合下列基本需求的相容組態,完成本指南中的前三個步驟:

  • 至少一個執行 Windows Server 2008 R2 的 Active Directory 網域控制站,並將網域功能等級設為 Windows Server 2008 R2

  • 一台執行 Windows Vista®、Windows® 7、Windows Server 2008 或 Windows Server 2008 R2,且為網域成員的用戶端電腦或伺服器

  • 一台智慧卡讀卡機,此讀卡機必須與用戶端電腦連接。如果您能夠存取可提供虛擬智慧卡與虛擬智慧卡讀卡機的軟體,便可將該軟體應用在虛擬 ADFSCLIENT 電腦上。如果您沒有這套軟體,可能需要建立名為 ADFSCLIENT 的實體電腦。您可以使用《Windows Server 2008 R2 中的 AD FS 逐步指南》(http://go.microsoft.com/fwlink/?LinkId=133009) 內所述之虛擬機器 (VM) 所使用的相同 IP 位址與組態,將此電腦加入網域。接著,您可以安裝智慧卡讀卡機。您還必須具備至少兩張不同的智慧卡以對應至不同的存取等級。您可以使用允許多個憑證,甚至是重複寫入的單一智慧卡來取代多張個別的智慧卡。

note備註
本指南不提供安裝樹系根網域控制站、設定網域成員用戶端電腦以及設定 AD FS 信任與宣告的相關說明。您可以在《Windows Server 2008 R2 中的 AD FS 逐步指南》(http://go.microsoft.com/fwlink/?LinkId=133009) 中找到這些說明。不過,本指南第一個步驟會說明憑證伺服器安裝,以及在智慧卡上設定與發佈憑證的相關資訊。

步驟 1:建立憑證

在實作驗證機制保證之前,必須先部署憑證登入方法。在此步驟,您會部署一個憑證授權單位 (CA) 並設定適當的登入憑證。此步驟包含用以確保網域功能等級為 Windows Server 2008 R2、準備 CA 以及準備憑證的相關程序。本步驟節包括下列程序:

若要啟動這些程序,您必須具備 Active Directory 網域服務 (AD DS) 結構。由於 AD DS 結構的設定方式相當多樣,本指南將使用《Windows Server 2008 R2 中的 AD FS 逐步指南》(http://go.microsoft.com/fwlink/?LinkId=133009) 中所述之組態。該指南說明如何設定兩個樹系 (adatum.com 與 treyresearch.net),以及如何設定這兩個樹系之間的信任關係。完成該指南的所有步驟時,就會設定兩個樹系之間的信任關係 (從 adatum.com 樹系將存取權授與 treyresearch.net 樹系)。本指南假設您已經具備《Windows Server 2008 R2 中的 AD FS 逐步指南》中的組態。不過,您可以選擇使用單一 Windows Server 2008 R2 網域控制站以及一部 Windows 7 用戶端或一部 Windows Vista 用戶端電腦來完成本指南的前三個步驟,而不用完成《Windows Server 2008 R2 中的 AD FS 逐步指南》中的組態。如果您是使用《Windows Server 2008 R2 中的 AD FS 逐步指南》中未指定的組態來完成本指南的所有步驟,則必須對樹系、網域與電腦名稱進行適當的調整,而且必須將所有組態差異納入考量。

security安全性 備註
在生產環境中,使用具備執行所需工作最基本權限的使用者帳戶。由於本指南係針對在測試環境中使用所撰寫,我們會在許多程序中指示您使用本機與網域 Administrator 帳戶來減少所需執行的步驟。

如需有關如何使用適當之帳戶與群組成員資格的詳細資訊,請參閱本機與網域預設群組 (http://go.microsoft.com/fwlink/?LinkId=83477)。

系統管理認證

若要執行此步驟中的所有工作,請以網域的 Administrator 帳戶登入。

確保網域功能等級為 Windows Server 2008 R2

note備註
如果您想要使用驗證機制保證功能,網域功能等級必須為 Windows Server 2008 R2。

確保網域功能等級為 Windows Server 2008 R2

  1. 開啟 [伺服器管理員]。 若要開啟 [伺服器管理員],請按一下 [開始],指向 [系統管理工具],再按一下 [伺服器管理員]。

  2. 必要時,在內容窗格中展開 [Active Directory 網域服務][Active Directory 使用者和電腦]

  3. 在代表網域 (adatum.com) 的物件上按一下滑鼠右鍵,然後按一下 [提高網域功能等級]

  4. [提高網域功能等級] 對話方塊中,[目前的網域功能等級] 應該會顯示為 [Windows Server 2008 R2]。若不是,請提高網域功能等級:選取 [Windows Server 2008 R2],然後按一下 [提高]

  5. 確認功能等級為 [Windows Server 2008 R2],並按一下 [關閉]

準備 CA

本節中的程序會在網域控制站 ADFSAccount 上安裝 Active Directory 憑證服務 (AD CS) 並設定 CA。如需 AD CS 的相關資訊,請參閱《基礎網路附隨指南:部署伺服器憑證》(http://go.microsoft.com/fwlink/?LinkId=132129)。

note備註
在生產環境中,建議您不要將 CA 安裝在網域控制站上。

安裝 AD CS 與設定 CA

  1. 在 [伺服器管理員] 的內容窗格中,展開 [角色]

  2. [角色] 上按一下滑鼠右鍵,然後按一下 [新增角色]

  3. 如果出現 [在您開始前] 頁面上,請按 [下一步]

  4. [選取伺服器角色] 頁面上,選取 [Active Directory 憑證服務] 核取方塊,然後按 [下一步]。 在 [Active Directory 憑證服務簡介] 頁面上,按 [下一步]

  5. [選取角色服務] 頁面上,確保已選取 [憑證授權單位] 核取方塊,然後按 [下一步]

  6. [指定安裝類型] 頁面上,確保已選取 [企業],然後按 [下一步]

  7. [指定 CA 類型] 頁面上,確保已選取 [根 CA],然後按 [下一步]

  8. [安裝私密金鑰] 頁面上,確保已選取 [建立新的私密金鑰],然後按 [下一步]

  9. [設定 CA 的密碼編譯] 頁面上,保留所有預設值 (除非您知道即將使用的特定智慧卡媒體與讀卡機類型需要進行變更),然後按 [下一步]

  10. [設定 CA 名稱] 頁面上,檢閱即將指派的名稱,然後按 [下一步]

  11. [設定有效期間] 頁面,保留預設值,然後按 [下一步]

  12. [設定憑證資料庫] 頁面上,保留預設位置 (除非您想將資料庫與記錄檔存放到其他位置),然後按 [下一步]

  13. [確認安裝選項] 頁面上,檢閱所呈現的資訊。安裝完 CA 之後,您應該會看到警告訊息,指出電腦的名稱與網域設定無法變更。按一下 [安裝]

  14. [安裝結果] 頁面上,確認安裝成功,然後按一下 [關閉]

準備憑證

本節中的程序可設定要發佈給智慧卡使用者的兩張憑證。這些憑證使用兩種不同的憑證原則。這些原則最終都會連結到可應用於資源存取控制清單 (ACL) 的群組,或是對應到 Active Directory Federation Services (AD FS) 宣告。由於這些憑證是依據憑證範本所建立與發行,您可以使用下列程序建立並設定憑證範本。

建立憑證範本

  1. 開啟 [伺服器管理員]。 若要開啟 [伺服器管理員],請按一下 [開始],指向 [系統管理工具],再按一下 [伺服器管理員]。

  2. 展開內容窗格中的 [Active Directory 憑證服務],然後按一下 [憑證範本]

  3. 在詳細資料窗格的 [智慧卡登入] 上按一下滑鼠右鍵,然後按一下 [複製範本]

  4. [複製範本] 對話方塊中,按一下 [Windows Server 2008 Enterprise],然後按一下 [確定]

  5. [新範本的內容] 對話方塊中,於 [一般] 索引標籤裡的 [範本顯示名稱] 中輸入新的憑證範本名稱,例如 Authentication Mechanism Medium Level Access

  6. 按一下 [安全性] 索引標籤。確定已選取 [Authenticated Users] 群組,然後選取 [允許] 核取方塊以對應至 [Authenticated Users][註冊] 權限。

    note備註
    如果您打算使用 Active Directory 網域服務 (AD DS) 自動發佈憑證,則選取 [允許] 核取方塊以對應至 [自動註冊] 權限。本指南不說明發佈憑證的方法。

  7. 確認同時選取 [允許] 核取方塊,以對應至 [Authenticated Users][讀取] 權限。

  8. 按一下 [延伸] 索引標籤。在 [在這個範本中所包含的延伸] 底下,依序按一下 [發行原則][編輯]

  9. [編輯發行原則延伸] 對話方塊中,按一下 [新增]

  10. [發行原則] 底下,依序按一下 [中度保證][確定]

    note備註
    雖然本指南使用 [中度保證] 與 [高度保證] 的預設發行原則,您還是可以在 [新增發行原則] 對話方塊中按一下 [新增],然後在 [新的發行原則] 對話方塊中新增 [名稱][CPS 位置] 的值,以建立新的發行原則。如需建立發行原則的相關資訊,請參閱「逐步解說 (實作與管理 Windows Server 2003 中的憑證範本)」(http://go.microsoft.com/fwlink/?LinkId=132135)。

  11. 確保 [中度保證] 已列在 [編輯發行原則延伸] 對話方塊中,然後按一下 [確定]

  12. 按一下 [加密] 索引標籤。根據智慧卡讀卡機與智慧卡廠商所提供的資訊,確保此處的設定適用於您的設備。否則,請保留預設值,然後按一下 [確定]

  13. [智慧卡登入] 範本上按一下滑鼠右鍵,然後按一下 [複製]

  14. [複製範本] 對話方塊中,按一下 [Windows Server 2008 Enterprise],然後按一下 [確定]

  15. [新範本的內容] 對話方塊中,於 [一般] 索引標籤裡的 [範本顯示名稱] 中輸入新的憑證範本名稱,例如 Authentication Mechanism Assurance High Level Access

  16. 按一下 [安全性] 索引標籤。確定已選取 [Authenticated Users] 群組,然後選取 [允許] 核取方塊以對應至 [Authenticated Users][註冊] 權限。

  17. 確認同時選取 [允許] 核取方塊,以對應至 [Authenticated Users][讀取] 權限。

  18. 按一下 [延伸] 索引標籤。在 [在這個範本中所包含的延伸] 底下,依序按一下 [發行原則][編輯]

  19. [編輯發行原則延伸] 對話方塊中,按一下 [新增]

  20. [發行原則] 底下,依序按一下 [高度保證][確定]

  21. 確保 [高度保證] 已列在 [編輯發行原則延伸] 對話方塊中,然後按一下 [確定]

  22. 按一下 [加密] 索引標籤。根據智慧卡讀卡機與智慧卡廠商所提供的資訊,確保此處的設定適用於您的設備。否則,請保留預設值,然後按一下 [確定]

啟用新的憑證範本

  1. 在 [伺服器管理員] 的內容窗格中,展開代表您的憑證伺服器 (adatum-ADFSACCOUNT-CA) 的物件。選取該物件底下的 [憑證範本]

  2. 在詳細資料窗格的伺服器物件底下,於 [憑證範本] 上按一下滑鼠右鍵,接著依序按一下 [新增][要發出的憑證範本]

  3. 按住 CTRL 鍵。在 [啟用憑證範本] 對話方塊中,按一下 [Authentication Mechanism Assurance High Level Access] 範本,然後按一下 [Authentication Mechanism Assurance Medium Level Access] 範本。放開 CTRL 鍵,然後按一下 [確定]

步驟 2:連結憑證原則與群組

在此步驟中,您將使用兩個 適用於 Windows PowerShell 的 Active Directory 模組 Cmdlet,將驗證機制保證憑證對應至群組成員資格,以供資源用來授與存取權限。

系統管理認證

若要執行此步驟中的所有工作,請以網域的 Administrator 帳戶登入。本步驟中的程序包括:

建立測試使用者帳戶

在本節中,您將建立兩個使用者帳戶,並將其用來測試使用者存取權杖中的差異 (要使用哪一個取決於是否使用智慧卡登入)。

建立測試使用者帳戶

  1. 在 [伺服器管理員] 的詳細資料窗格中,確保位於 [Active Directory 網域服務][Active Directory 使用者和電腦] 底下代表網域 (adatum.com) 的物件已經展開。

  2. 在內容窗格中,選取 [使用者] 容器。

  3. [使用者] 容器上按一下滑鼠右鍵,然後依序按一下 [新增][使用者]

  4. [新增物件 - 使用者] 對話方塊中,輸入 Cassie 當作名字,並輸入 Hicks 當作姓氏,同時輸入 CassieHi 當作使用者登入名稱,然後按 [下一步]

  5. [密碼][確認密碼] 中,輸入使用者帳戶的新密碼。如果您此時沒有想到任何密碼,請使用 P@ssw0rd。清除 [使用者必須在下次登入時變更密碼] 核取方塊,然後按 [下一步]

  6. 檢閱帳戶建立詳細資料,然後按一下 [完成]

  7. 使用 ToddMeadowsToddMead 作為名字、姓氏與使用者登入名稱來建立使用者帳戶,然後按 [下一步]

  8. 設定並確認 ToddMead 的密碼,清除 [使用者必須在下次登入時變更密碼] 核取方塊,然後按 [下一步]

  9. 檢閱帳戶建立詳細資料,然後按一下 [完成]

準備指令碼

在本節中,您會建立兩個 Active Directory 模組 Cmdlet。您將在稍後使用這些指令碼,顯示憑證發行原則並將這些原則與個別群組連結。您將把第一個指令碼複製到名為 get-IssuancePolicy.ps1 的檔案中。這個指令碼可以顯示憑證授權單位 (CA) 上可用的發行原則。您將把第二個指令碼複製到名為 set-IssuancePolicyToGroupLink.ps1 的檔案中。第二個指令碼會建立群組與組織單位 (OU)。它還能將您先前建立的憑證發行原則連結至將用來代表驗證機制與憑證類型或用途的群組。

建立指令碼檔案

  1. 在網域控制站 (ADFSAccount) 上開啟 [命令提示字元] 視窗。若要開啟 [命令提示字元] 視窗,請按一下 [開始]。在 [開始搜尋] 中輸入 cmd,然後在 [程式集] 清單中按兩下 cmd.exe

  2. 在命令提示字元中輸入 cd %userprofile%,然後按下 ENTER。這樣可確保您位於目前的使用者設定檔目錄,此目錄為 Active Directory 模組 的一般預設位置。

  3. 輸入 notepad get-IssuancePolicy.ps1,然後按下 ENTER。

  4. [記事本] 對話方塊中,按一下 [是],確認您要建立檔案。

  5. 複製下列文字,並將其貼到剛建立好的記事本檔案中。

    #######################################
    ##     Parameters to be defined      ##
    ##     by the user                   ##
    #######################################
    
    Param (
    $Identity,
    $LinkedToGroup
    )
    
    #######################################
    ##     Strings definitions           ##
    #######################################
    Data getIP_strings {
    # culture=“en-US”
    ConvertFrom-StringData -stringdata @’
    help1 = This command can be used to retrieve all available Issuance Policies in a forest. The forest of the currently logged on user is targetted.
    help2 = Usage:
    help3 = The following parameter is mandatory:
    help4 = -LinkedToGroup:<yes|no|all>
    help5 = "yes" will return only Issuance Policies that are linked to groups. Checks that the linked Issuance Policies are linked to valid groups.
    help6 = "no" will return only Issuance Policies that are not currently linked to any group. 
    help7 = "all" will return all Issuance Policies defined in the forest. Checks that the linked Issuance policies are linked to valid groups.
    help8 = The following parameter is optional:
    help9 = -Identity:<Name, Distinguished Name or Display Name of the Issuance Policy that you want to retrieve>. If you specify an identity, the option specified in the "-LinkedToGroup" parameter is ignored.
    help10 = Output: This script returns the Issuance Policy objects meeting the criteria defined by the above parameters.
    help11 = Examples:
    errorIPNotFound = Error: no Issuance Policy could be found with Identity "{0}"
    ErrorNotSecurity = Error: Issuance Policy "{0}" is linked to group "{1}" which is not of type "Security".
    ErrorNotUniversal = Error: Issuance Policy "{0}" is linked to group "{1}" whose scope is not "Universal".
    ErrorHasMembers = Error: Issuance Policy "{0}" is linked to group "{1}" which has a non-empty membership. The group has the following members:
    LinkedIPs = The following Issuance Policies are linked to groups:
    displayName = displayName : {0}
    Name = Name : {0}
    dn = distinguishedName : {0}
            InfoName = Linked Group Name: {0} 
            InfoDN = Linked Group DN: {0}   
    NonLinkedIPs = The following Issuance Policies are NOT linked to groups:
    ’@
    }
    
    ##Import-LocalizedData getIP_strings
    
    
    import-module ActiveDirectory
    
    
    #######################################
    ##           Help                    ##
    #######################################
    
    function Display-Help {
    
        ""
        $getIP_strings.help1
        ""
    $getIP_strings.help2
    ""
    $getIP_strings.help3
    "     " + $getIP_strings.help4
    "             " + $getIP_strings.help5
        "             " + $getIP_strings.help6
        "             " + $getIP_strings.help7
    ""
    $getIP_strings.help8
        "     " + $getIP_strings.help9
        ""
        $getIP_strings.help10
    ""
    ""    
    $getIP_strings.help11
        "     " + '$' + "myIPs = .\get-IssuancePolicy.ps1 -LinkedToGroup:All"
        "     " + '$' + "myLinkedIPs = .\get-IssuancePolicy.ps1 -LinkedToGroup:yes"
        "     " + '$' + "myIP = .\get-IssuancePolicy.ps1 -Identity:""Medium Assurance"""
    ""
    }
    
    
    $root = get-adrootdse
    $domain = get-addomain -current loggedonuser
    $configNCDN = [String]$root.configurationNamingContext
    
    
    if ( !($Identity) -and !($LinkedToGroup) ) {
    display-Help
    break
    }
    
    if ($Identity) {
        $OIDs = get-adobject -Filter {(objectclass -eq "msPKI-Enterprise-Oid") -and ((name -eq $Identity) -or (displayname -eq $Identity) -or (distinguishedName -like $Identity)) } -searchBase $configNCDN -properties *
    
        if ($OIDs -eq $null) {
    $errormsg = $getIP_strings.ErrorIPNotFound -f $Identity
    write-host $errormsg -ForegroundColor Red
        }
        
        foreach ($OID in $OIDs) {
        
            if ($OID."msDS-OIDToGroupLink") {
                # In case the Issuance Policy is linked to a group, it is good to check whether there is any problem with the mapping.
                $groupDN = $OID."msDS-OIDToGroupLink"
                $group = get-adgroup -Identity $groupDN
        $groupName = $group.Name
                
                # Analyze the group
                if ($group.groupCategory -ne "Security") {
    $errormsg = $getIP_strings.ErrorNotSecurity -f $Identity, $groupName
                    write-host $errormsg -ForegroundColor Red
                }
                if ($group.groupScope -ne "Universal") {
                    $errormsg = $getIP_strings.ErrorNotUniversal -f $Identity, $groupName
    write-host $errormsg -ForegroundColor Red
                }
                $members = Get-ADGroupMember -Identity $group
                if ($members) {
                    $errormsg = $getIP_strings.ErrorHasMembers -f $Identity, $groupName
    write-host $errormsg -ForegroundColor Red
                    foreach ($member in $members) {
                        write-host "          "  $member -ForeGroundColor Red
                    }
                }
            }
            
        }
        return $OIDs
        break
    }
    
    if (($LinkedToGroup -eq "yes") -or ($LinkedToGroup -eq "all")) {
        $LDAPFilter = "(&(objectClass=msPKI-Enterprise-Oid)(msDS-OIDToGroupLink=*)(flags=2))"
        $LinkedOIDs = get-adobject -searchBase $configNCDN -LDAPFilter $LDAPFilter -properties *
    
        write-host ""    
        write-host "*****************************************************"
        write-host $getIP_strings.LinkedIPs
        write-host "*****************************************************"
        write-host ""
        if ($LinkedOIDs -ne $null){
          foreach ($OID in $LinkedOIDs) {
      
              # Display basic information about the Issuance Policies
              ""
      $getIP_strings.displayName -f $OID.displayName
      $getIP_strings.Name -f $OID.Name
      $getIP_strings.dn -f $OID.distinguishedName
           
              
              # Get the linked group.
              $groupDN = $OID."msDS-OIDToGroupLink"
              $group = get-adgroup -Identity $groupDN
              $getIP_strings.InfoName -f $group.Name
              $getIP_strings.InfoDN -f $groupDN
              
              # Analyze the group
              $OIDName = $OID.displayName
        $groupName = $group.Name
              if ($group.groupCategory -ne "Security") {
              $errormsg = $getIP_strings.ErrorNotSecurity -f $OIDName, $groupName
              write-host $errormsg -ForegroundColor Red
              }
              if ($group.groupScope -ne "Universal") {
              $errormsg = $getIP_strings.ErrorNotUniversal -f $OIDName, $groupName
              write-host $errormsg -ForegroundColor Red
              }
              $members = Get-ADGroupMember -Identity $group
              if ($members) {
              $errormsg = $getIP_strings.ErrorHasMembers -f $OIDName, $groupName
              write-host $errormsg -ForegroundColor Red
                  foreach ($member in $members) {
                      write-host "          "  $member -ForeGroundColor Red
                  }
              }
              write-host ""
          }
        }else{
    write-host "There are no issuance policies that are mapped to a group"
        }
        if ($LinkedToGroup -eq "yes") {
            return $LinkedOIDs
            break
        }
    }    
    
    if (($LinkedToGroup -eq "no") -or ($LinkedToGroup -eq "all")) {  
        $LDAPFilter = "(&(objectClass=msPKI-Enterprise-Oid)(!(msDS-OIDToGroupLink=*))(flags=2))"
        $NonLinkedOIDs = get-adobject -searchBase $configNCDN -LDAPFilter $LDAPFilter -properties *
    
        write-host ""    
        write-host "*********************************************************"
        write-host $getIP_strings.NonLinkedIPs
        write-host "*********************************************************"
        write-host ""
        if ($NonLinkedOIDs -ne $null) {
          foreach ($OID in $NonLinkedOIDs) {
    
    # Display basic information about the Issuance Policies
    write-host ""
    $getIP_strings.displayName -f $OID.displayName
    $getIP_strings.Name -f $OID.Name
    $getIP_strings.dn -f $OID.distinguishedName
    write-host ""
          }
        }else{
    write-host "There are no issuance policies which are not mapped to groups"
        }
        if ($LinkedToGroup -eq "no") {
            return $NonLinkedOIDs
            break
        }
    }
    
    
  6. 將文字貼上記事本之後,依序按一下 [檔案] 功能表與 [儲存]

  7. 按一下 [檔案] 功能表,然後按一下 [結束]

  8. 在命令提示字元中輸入 notepad set-IssuancePolicyToGroupLink.ps1,然後按下 ENTER。

  9. [記事本] 對話方塊中,按一下 [是],確認您要建立檔案。

  10. 複製下列文字,並將其貼到剛建立好的記事本檔案中。

    #######################################
    ##     Parameters to be defined      ##
    ##     by the user                   ##
    #######################################
    
    Param (
    $IssuancePolicyName,
    $groupOU,
    $groupName
    )
    
    #######################################
    ##     Strings definitions           ##
    #######################################
    
    Data ErrorMsg {
    # culture=“en-US”
    ConvertFrom-StringData -stringdata @’
    help1 = This command can be used to set the link between a certificate issuance policy and a universal security group.
    help2 = Usage:
    help3 = The following parameters are required:
    help4 = -IssuancePolicyName:<name or display name of the issuance policy that you want to link to a group>
    help5 = -groupName:<name of the group you want to link the issuance policy to>. If no name is specified, any existing link to a group is removed from the Issuance Policy.
    help6 = The following parameter is optional:
    help7 = -groupOU:<Name of the Organizational Unit dedicated to the groups which are linked to issuance policies>. If this parameter is not specified, the group is looked for or created in the Users container.
    help8 = Examples:
    help9 = This command will link the issuance policy whose display name is "High Assurance" to the group "HighAssuranceGroup" in the Organizational Unit "OU_FOR_IPol_linked_groups". If the group or the Organizational Unit do not exist, you will be prompted to create them.
    help10 = This command will unlink the issuance policy whose name is "402.164959C40F4A5C12C6302E31D5476062" from any group.
    MultipleIPs = Error: Multiple Issuance Policies with name or display name "{0}" were found in the subtree of "{1}"
    NoIP = Error: no issuance policy with name or display name "{0}" could be found in the subtree of "{1}".
    IPFound = An Issuance Policy with name or display name "{0}" was succesfully found: {1}
    MultipleOUs = Error: more than 1 Organizational Unit with name "{0}" could be found in the subtree of "{1}".
    confirmOUcreation = Warning: The Organizational Unit that you specified does not exist. Do you want to create it?
    OUCreationSuccess = Organizational Unit "{0}" successfully created.
    OUcreationError = Error: Organizational Unit "{0}" could not be created.
    OUFoundSuccess = Organizational Unit "{0}" was successfully found.
    multipleGroups = Error: More than one group with name "{0}" was found in Organizational Unit "{1}".  
    confirmGroupCreation = Warning: The group that you specified does not exist. Do you want to create it?
    groupCreationSuccess = Univeral Security group "{0}" successfully created.
    groupCreationError = Error: Univeral Security group "{0}" could not be created.
    GroupFound = Group "{0}" was successfully found.
    confirmLinkDeletion = Warning: The Issuance Policy "{0}" is currently linked to group "{1}". Do you really want to remove the link?
    UnlinkSuccess = Certificate issuance policy successfully unlinked from any group.
    UnlinkError = Removing the link failed.
    UnlinkExit = Exiting without removing the link from the issuance policy to the group.
    IPNotLinked = The Certificate issuance policy is not currently linked to any group. If you want to link it to a group, you should specify the -groupName option when starting this script.
    ErrorNotSecurity = Error: You cannot link issuance Policy "{0}" to group "{1}" because this group is not of type "Security".
    ErrorNotUniversal = Error: You cannot link issuance Policy "{0}" to group "{1}" because the scope of this group is not "Universal".
    ErrorHasMembers = Error: You cannot link issuance Policy "{0}" to group "{1}" because it has a non-empty membership. The group has the following members:
    ConfirmLinkReplacement = Warning: The Issuance Policy "{0}" is currently linked to group "{1}". Do you really want to update the link to point to group "{2}"?
    LinkSuccess = The certificate issuance policy was successfully linked to the specified group.
    LinkError = The certificate issuance policy could not be linked to the specified group.
    ExitNoLinkReplacement = Exiting without setting the new link.
    ’@
    }
    
    # import-localizeddata ErrorMsg
    
    function Display-Help {
    ""
    write-host $ErrorMsg.help1
    ""
    write-host $ErrorMsg.help2
    ""
    write-host $ErrorMsg.help3
    write-host "`t" $ErrorMsg.help4
    write-host "`t" $ErrorMsg.help5
    ""
    write-host $ErrorMsg.help6
    write-host "`t" $ErrorMsg.help7
    ""
    ""
    write-host $ErrorMsg.help8
    ""
    write-host $ErrorMsg.help9
    ".\Set-IssuancePolicyToGroupMapping.ps1 -IssuancePolicyName ""High Assurance"" -groupOU ""OU_FOR_IPol_linked_groups"" -groupName ""HighAssuranceGroup"" "
    ""
    write-host $ErrorMsg.help10
    '.\Set-IssuancePolicyToGroupMapping.ps1 -IssuancePolicyName "402.164959C40F4A5C12C6302E31D5476062" -groupName $null '
    ""
    }
    
    
    
    # Assumption:  The group to which the Issuance Policy is going 
    #              to be linked is (or is going to be created) in 
    #              the domain the user running this script is a member of.
    import-module ActiveDirectory
    $root = get-adrootdse
    $domain = get-addomain -current loggedonuser
    
    
    if ( !($IssuancePolicyName) ) {
    display-Help
    break
    }
    
    #######################################
    ##     Find the OID object           ##
    ##     (aka Issuance Policy)         ##
    #######################################
    
    $searchBase = [String]$root.configurationnamingcontext
    $OID = get-adobject -searchBase $searchBase -Filter { ((displayname -eq $IssuancePolicyName) -or (name -eq $IssuancePolicyName)) -and (objectClass -eq "msPKI-Enterprise-Oid")} -properties *
    
    if ($OID -eq $null) {
    $tmp = $ErrorMsg.NoIP -f $IssuancePolicyName, $searchBase  
    write-host $tmp -ForeGroundColor Red
    break;
    }
    elseif ($OID.GetType().IsArray) {
    $tmp = $ErrorMsg.MultipleIPs -f $IssuancePolicyName, $searchBase  
    write-host $tmp -ForeGroundColor Red
    break;
    }
    else {
    $tmp = $ErrorMsg.IPFound -f $IssuancePolicyName, $OID.distinguishedName
    write-host $tmp -ForeGroundColor Green
    }
    
    
    
    #######################################
    ##  Find the container of the group  ##
    #######################################
    
    if ($groupOU -eq $null) {
    # default to the Users container
    $groupContainer = $domain.UsersContainer
    } 
    else {
    $searchBase = [string]$domain.DistinguishedName
    $groupContainer = get-adobject -searchBase $searchBase -Filter { (Name -eq $groupOU) -and (objectClass -eq "organizationalUnit")}
    if ($groupContainer.count -gt 1) {
    $tmp = $ErrorMsg.MultipleOUs -f $groupOU, $searchBase
    write-host $tmp -ForegroundColor Red
    break;
    }
    elseif ($groupContainer -eq $null) {
    $tmp = $ErrorMsg.confirmOUcreation
    write-host $tmp " ( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
    $userChoice = read-host
    if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
    new-adobject -Name $groupOU -displayName $groupOU -Type "organizationalUnit" -ProtectedFromAccidentalDeletion $true -path $domain.distinguishedName
    if ($?){
    $tmp = $ErrorMsg.OUCreationSuccess -f $groupOU
    write-host $tmp -ForegroundColor Green
    }
    else{
    $tmp = $ErrorMsg.OUCreationError -f $groupOU
    write-host $tmp -ForeGroundColor Red 
    break;
    }
    $groupContainer = get-adobject -searchBase $searchBase -Filter { (Name -eq $groupOU) -and (objectClass -eq "organizationalUnit")}
    }
    else {
    break;
    }
    }
    else {
    $tmp = $ErrorMsg.OUFoundSuccess -f $groupContainer.name
    write-host $tmp -ForegroundColor Green
    }
    }
    
    #######################################
    ##  Find the group               ##
    #######################################
    
    if (($groupName -ne $null) -and ($groupName -ne "")){
    ##$searchBase = [String]$groupContainer.DistinguishedName
    $searchBase = $groupContainer
    $group = get-adgroup -Filter { (Name -eq $groupName) -and (objectClass -eq "group") } -searchBase $searchBase
    if ($group -ne $null -and $group.gettype().isarray) {
    $tmp = $ErrorMsg.multipleGroups -f $groupName, $searchBase
    write-host $tmp -ForeGroundColor Red
    break;
    }
    elseif ($group -eq $null) {
    $tmp = $ErrorMsg.confirmGroupCreation
    write-host $tmp " ( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
    $userChoice = read-host
    if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
    new-adgroup -samAccountName $groupName -path $groupContainer.distinguishedName -GroupScope "Universal" -GroupCategory "Security"
    if ($?){
    $tmp = $ErrorMsg.GroupCreationSuccess -f $groupName
    write-host $tmp -ForegroundColor Green
    }else{
    $tmp = $ErrorMsg.groupCreationError -f $groupName
    write-host $tmp -ForeGroundColor Red 
    break
    }
    $group = get-adgroup -Filter { (Name -eq $groupName) -and (objectClass -eq "group") } -searchBase $searchBase
    }
    else {
    break;
    }
    }
    else {
    $tmp = $ErrorMsg.GroupFound -f $group.Name
    write-host $tmp -ForegroundColor Green
    }
    } 
    else {
    #####
    ## If the group is not specified, we should remove the link if any exists
    #####
    if ($OID."msDS-OIDToGroupLink" -ne $null) {
    $tmp = $ErrorMsg.confirmLinkDeletion -f $IssuancePolicyName, $OID."msDS-OIDToGroupLink"
    write-host $tmp " ( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
    $userChoice = read-host
    if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
    set-adobject -Identity $OID -Clear "msDS-OIDToGroupLink"
    if ($?) {
    $tmp = $ErrorMsg.UnlinkSuccess
    write-host $tmp -ForeGroundColor Green
    }else{
    $tmp = $ErrorMsg.UnlinkError
    write-host $tmp -ForeGroundColor Red
    }
    } 
    else { 
    $tmp = $ErrorMsg.UnlinkExit
    write-host $tmp
    break 
    }
    }
    else {
    $tmp = $ErrorMsg.IPNotLinked
    write-host $tmp -ForeGroundColor Yellow
    }
    break;
    }
    
    
    #######################################
    ##  Verify that the group is         ##
    ##  Universal, Security, and         ## 
    ##  has no members                   ##
    #######################################
    
    if ($group.GroupScope -ne "Universal") {
    $tmp = $ErrorMsg.ErrorNotUniversal -f $IssuancePolicyName, $groupName
    write-host $tmp -ForeGroundColor Red
    break;
    }
    if ($group.GroupCategory -ne "Security") {
    $tmp = $ErrorMsg.ErrorNotSecurity -f $IssuancePolicyName, $groupName
    write-host $tmp -ForeGroundColor Red
    break;
    }
    $members = Get-ADGroupMember -Identity $group
    if ($members -ne $null) {
    $tmp = $ErrorMsg.ErrorHasMembers -f $IssuancePolicyName, $groupName
    write-host $tmp -ForeGroundColor Red
    foreach ($member in $members) {write-host "   $member.name" -ForeGroundColor Red}
    break;
    }
    
    
    #######################################
    ##  We have verified everything. We  ##
    ##  can create the link from the     ## 
    ##  Issuance Policy to the group.    ##
    #######################################
    
    if ($OID."msDS-OIDToGroupLink" -ne $null) {
    $tmp = $ErrorMsg.ConfirmLinkReplacement -f $IssuancePolicyName, $OID."msDS-OIDToGroupLink", $group.distinguishedName
    write-host $tmp  "( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
    $userChoice = read-host
    if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
    $tmp = @{'msDS-OIDToGroupLink'= $group.DistinguishedName}
    set-adobject -Identity $OID -Replace $tmp
    if ($?) {
    $tmp = $Errormsg.LinkSuccess
    write-host $tmp -Foreground Green
    }else{
    $tmp = $ErrorMsg.LinkError
    write-host $tmp -Foreground Red
    }
    } else { 
    $tmp = $Errormsg.ExitNoLinkReplacement
    write-host $tmp
    break 
    }
    }
    else {
    $tmp = @{'msDS-OIDToGroupLink'= $group.DistinguishedName}
    set-adobject -Identity $OID -Add $tmp
    if ($?) {
    $tmp = $Errormsg.LinkSuccess
    write-host $tmp -Foreground Green
    }else{
    $tmp = $ErrorMsg.LinkError
    write-host $tmp -Foreground Red
    }
    }
    
    
  11. 將文字貼上記事本之後,依序按一下 [檔案] 功能表與 [儲存]

  12. 按一下 [檔案] 功能表,然後按一下 [結束]

連結憑證原則與群組

在本節中,您將執行 Active Directory 模組 Cmdlet 來建立第一個群組與 OU,並將第一個憑證對應至第一個原則。下列程序會建立其他群組,並將這些群組對應至適用的原則,但是會將新的群組存放在您於上一個程序所建立的現有 OU 中。

note備註
在 Beta 版的 Windows Server 2008 R2 中, 適用於 Windows PowerShell 的 Active Directory 模組 稱為 Active Directory PowerShell。

將憑證發行原則與適當的群組連結

  1. 在網域控制站 (ADFSAccount) 上開啟 適用於 Windows PowerShell 的 Active Directory 模組 。若要開啟 適用於 Windows PowerShell 的 Active Directory 模組 ,請依序按一下 [開始][系統管理工具] 及 [ 適用於 Windows PowerShell 的 Active Directory 模組 ]。

    Active Directory 模組 命令提示字元的位置預設應為您在先前程序中建立 Active Directory 模組 Cmdlet 時所在的 %userprofile% 目錄。

    note備註
    在系統上執行 Active Directory 模組 Cmdlet 之前,請檢查 Windows PowerShell 的執行原則。若要這樣做,請執行命令 Get-Execution Policy。如果您在命令輸出中看到 Restricted 字樣,則執行命令 Set-Execution Policy Unrestricted。稍後當您完成執行這些指令碼之後,可以執行命令 Set-Execution Policy Restricted 將執行原則還原為「受限制的」。

  2. 適用於 Windows PowerShell 的 Active Directory 模組 命令視窗中,輸入 .\get-IssuancePolicy.ps1 –LinkedToGroup:All,然後按下 ENTER。這個命令會顯示與群組連結的憑證發行原則,以及未與群組連結的原則。一開始,您應該看不到任何與群組連結的原則。

    note備註
    如果您看到錯誤訊息 Get-ADRootDSE: “Unable to find a default server”,請開啟 [服務] 嵌入式管理單元。若要開啟 [服務] 嵌入式管理單元,依序按一下 [開始][執行],輸入 services.msc,然後按下 ENTER。確保 Active Directory Web 服務正在執行。若要這麼做,按兩下 [Active Directory Web 服務]。如果服務狀態為 [已停止],按一下 [啟動]。按一下 [確定],關閉 [服務] 主控台,然後於 適用於 Windows PowerShell 的 Active Directory 模組 中再執行一次先前的命令。

  3. 在命令提示字元中輸入 .\set-IssuancePolicyToGroupLink.ps1 –IssuancePolicyDisplayName:"High Assurance" –groupOU:"Auth Mech Assurance Groups" –groupName:"High Level Access",然後按下 ENTER。此命令會將 High Level Access 群組與高度保證憑證發行原則連結。不過,由於該群組與 OU 並不存在,因此系統會提示您加以建立。

  4. 當系統提示您建立 OU 時,輸入 Y,然後按下 ENTER。

  5. 當系統提示您建立群組時,輸入 Y,然後按下 ENTER。

  6. 輸入 .\set-IssuancePolicyToGroupLink.ps1 –IssuancePolicyDisplayName:"Medium Assurance" –groupOU:"Auth Mech Assurance Groups" –groupName:"Medium Level Access",然後按下 ENTER。此命令會將 Medium Level Access 群組與中度保證憑證發行原則連結。由於 Medium Level Assurance 群組並不存在,因此系統會提示您加以建立。

  7. 當系統提示您建立群組時,輸入 Y,然後按下 ENTER。

  8. 輸入 .\get-IssuancePolicy.ps1 –LinkedToGroup:Yes,然後按下 ENTER。此命令應該會顯示目前有兩個已經與群組連結的保證原則 (中度保證與高度保證)。

  9. 若要關閉 適用於 Windows PowerShell 的 Active Directory 模組 視窗,輸入 Exit,然後按下 ENTER。

步驟 3:下載並測試憑證

在本步驟中,您需將適當的憑證置入適用的智慧卡中,然後測試當使用這些智慧卡登入時,它們對使用者存取權杖的影響。您的用戶端電腦 (ADFSClient) 必須連接一台設定好的智慧卡讀卡機,並備妥兩張智慧卡以便用來從憑證授權單位 (CA) 下載憑證。本步驟中的程序包括:

系統管理認證

若要執行此步驟中的所有工作,請以網域的 Administrator 帳戶登入。

取得適當的憑證

在本節中,您會使用 Cassie Hicks 帳戶來登入,然後將憑證下載至已指定「高度驗證機制保證」的智慧卡中。接著,您會使用 Todd Meadows 帳戶登入,並將憑證下載至已指定「中度驗證機制保證」的其他智慧卡中。

下載憑證

  1. 使用 CassieHi 使用者帳戶登入用戶端電腦 (ADFSClient)。

  2. 將智慧卡插入您要用於 Cassie Hicks 的智慧卡讀卡機中 (任一張卡都可以,只要記得其指定對象即可)。

  3. 按一下 [開始]。在 [開始搜尋] 中輸入 certmgr.msc,然後按下 ENTER。

  4. 在 certmgr [憑證 - 目前的使用者] 主控台的內容窗格中,在 [個人] 上按一下滑鼠右鍵,然後依序按一下 [所有工作][要求新憑證]

  5. [在您開始前] 頁面上,按 [下一步]

  6. [憑證註冊] 頁面上,確定已選取 [企業原則],然後按 [下一步]

  7. 選取 [Authentication Mechanism Assurance High Level Access] 核取方塊,然後按一下 [註冊]

    note備註
    如果您看不到任何憑證,請開啟具有提升之權限的 [命令提示字元] 視窗。若要開啟提升的 [命令提示字元] 視窗,按一下 [開始]、指向 [所有程式],按一下 [附屬應用程式],在 [命令提示字元] 上按一下滑鼠右鍵,然後按一下 [以系統管理員身分執行]。 執行命令 gpupdate /force,然後再次嘗試要求憑證。

  8. 按一下 [完成]

  9. 登出,然後從讀卡機中移除智慧卡。

  10. 以 ToddMead 的身分登入。

  11. 插入您要用於 Todd Meadows 的智慧卡 (這張卡應與用於 Cassie Hicks 的智慧卡不同,除非您確定手中的智慧卡可支援多個憑證)。

  12. 執行上述步驟 3-6,然後移至步驟 13 (下列步驟)。

  13. 選取 [Authentication Mechanism Assurance Medium Level Access] 核取方塊,然後按一下 [註冊]

  14. 按一下 [完成]

  15. 登出。

確認其他群組成員資格

在本節中,您需要先以 Todd Meadows 身分登入,稍後再以 Cassie Hicks 身分登入。每一次登入之後,您需要檢查使用者的群組成員資格以確認每位使用者的存取權杖都加入了其他成員資格,因為這些成員會使用自己的智慧卡憑證來登入。

使用智慧卡登入並檢視存取權杖

  1. ToddMead 的智慧卡現在應該已經插入智慧卡讀卡機中。存取登入畫面。您會看到一個代表每一位使用者所選用的智慧卡登入的圖示。在 Windows Vista 或 Windows Server 2008 中,您必須依序按一下 [開始]、向右鍵與 [切換使用者] 才會看到這些圖示。

  2. 按一下對應至 ToddMead 的智慧卡登入圖示。當系統提示您輸入智慧卡個人識別碼 (PIN) 時,請加以輸入。

    note備註
    如果出現錯誤訊息「系統無法將您登入。您的帳戶網域控制站不支援智慧卡登入。請連絡您的系統管理員,確認已為組織設定智慧卡登入」,請重新啟動網域控制站。網域控制站重新啟動之後,請使用密碼登入用戶端電腦。開啟具有提升之權限的命令提示字元。若要開啟提升的 [命令提示字元] 視窗,按一下 [開始]、指向 [所有程式],按一下 [附屬應用程式],在 [命令提示字元] 上按一下滑鼠右鍵,然後按一下 [以系統管理員身分執行]。 執行命令 gpupdate /force。當您看到使用者原則與電腦原則更新作業皆已順利完成後,請登出。接著,再次嘗試使用智慧卡登入。

  3. 開啟 [命令提示字元] 視窗。 若要開啟 [命令提示字元] 視窗,請按一下 [開始],依序指向 [所有程式] 及 [附屬應用程式],再按一下 [命令提示字元]。

  4. 在命令提示字元中輸入 whoami /groups,然後按下 ENTER。請注意,存取權杖中現在已經包含了 Medium Access Level 群組成員資格。

  5. 登出,然後移除智慧卡。

  6. 使用 ToddMead 帳戶與密碼登入 (亦即,以不使用智慧卡的方式登入)。

  7. 在命令提示字元中,再次執行 whoami /groups 命令。請注意,存取權杖中現在已經不包含 Medium Access Level 群組成員資格。

  8. 插入 CassieHi 的智慧卡,然後存取登入畫面。按一下代表 CassieHi 的智慧卡登入的圖示。當系統提示您輸入智慧卡 PIN 碼時,請加以輸入。

  9. 開啟 [命令提示字元] 視窗。 若要開啟 [命令提示字元] 視窗,請按一下 [開始],依序指向 [所有程式] 及 [附屬應用程式],再按一下 [命令提示字元]。

  10. 在命令提示字元中輸入 whoami /groups,然後按下 ENTER。請注意,存取權杖中現在已經包含了 High Access Level 群組成員資格。

  11. 使用 CassieHi 帳戶與密碼登入 (亦即,以不使用智慧卡的方式登入)。

  12. 開啟 [命令提示字元] 視窗,然後再次執行 whoami /groups。請注意,存取權杖中現在已經不包含 High Access Level 群組成員資格。

  13. 登出。

步驟 4:設定同盟伺服器

現在您應該已經針對驗證機制保證設定好 adfsaccount 電腦,在此步驟中,您會在 A. Datum Corporation 與 Trey Research 的同盟伺服器上設定同盟服務。在此步驟中,您要:

  • 在 A. Datum Corporation 與 Trey Research 的同盟服務中建立兩個組織群組宣告,以代表您在上一個步驟中所建立的每一個智慧卡憑證的兩種安全性等級 (中度保證與高度保證)。

  • 設定兩個群組宣告,讓它們能夠對應到驗證機制保證指令碼所建立的 Active Directory 網域服務 (AD DS) 中的適當群組。

  • 在這兩個組織中建立兩個宣告對應,以將在 A. Datum 中建立的宣告和 Trey Research 中的對應宣告關聯。

此步驟包含下列工作:

若要執行此步驟中的所有程序,請使用網域的 Administrator 帳戶登入 adfsaccount 電腦與 adfsresource 電腦。

在 A. Datum 中建立並對應群組宣告

本節包括下列程序:

在 A. Datum 中建立兩個群組宣告

在 adfsaccount 電腦上完成下列程序以建立兩個組織群組宣告,用以代表「步驟 3:下載並測試憑證」中所下載的兩個智慧卡憑證的不同安全性等級。

在 A. Datum 中建立兩個群組宣告

  1. 按一下 [開始],指向 [系統管理工具],然後按一下 [Active Directory Federation Services]

  2. 依序按兩下 [Federation Service][信任原則][我的組織],在 [組織宣告] 上按一下滑鼠右鍵,指向 [新增],然後按一下 [組織宣告]

  3. [建立新組織宣告] 對話方塊的 [宣告名稱] 中,輸入 High Assurance Claim

  4. 確認已選取 [群組宣告],然後按一下 [確定]。重複以上步驟,建立另一個名為 Medium Assurance Claim 的群組宣告。

在 A. Datum 中將群組宣告對應至全域群組

在 adfsaccount 電腦上完成下列程序以將兩個 Active Directory 全域群組 (您以「步驟 2:連結憑證原則與群組」中的指令碼所建立) 對應至新建立的群組宣告。

在 A. Datum 中將群組宣告對應至全域群組

  1. 按一下 [開始],指向 [系統管理工具],然後按一下 [Active Directory Federation Services]

  2. 依序按兩下 [Federation Service][信任原則][我的組織][帳戶存放區],在 [Active Directory] 上按一下滑鼠右鍵,指向 [新增],然後按一下 [群組宣告擷取]

  3. [建立新的群組宣告解壓縮] 對話方塊中,按一下 [新增],輸入 high level access,然後按一下 [確定]

  4. 按一下 [對應到這個組織宣告] 功能表中的 [High Assurance Claim],然後按一下 [確定]。重複以上步驟,建立額外的 Active Directory 群組對應。您應該在 medium level access 群組與對應的 Medium Assurance Claim 宣告之間建立此對應。

在 A. Datum 中建立兩個宣告對應

在 adfsaccount 電腦上完成下列程序以建立兩個連出的宣告對應,用以將 A. Datum 中的新安全性等級宣告對應至您稍後將在 Trey Research 中建立之群組宣告。

在 A. Datum 中建立兩個宣告對應

  1. 按一下 [開始],指向 [系統管理工具],然後按一下 [Active Directory Federation Services]

  2. 依序按兩下 [Federation Service][信任原則][夥伴組織][資源夥伴],在 [Trey Research] 上按一下滑鼠右鍵,指向 [新增],然後按一下 [連出群組宣告對應]

  3. [建立新的連出群組宣告對應] 對話方塊的 [連出的群組宣告名稱] 中,輸入 highassurancemapping

    note備註
    此值有大小寫之別。它必須完全符合您在資源夥伴組織 Trey Research 之連入群組宣告對應中指定的值。

  4. [組織群組宣告] 中按一下 [High Assurance Claim],然後按一下 [確定]。重複以上步驟,針對對應的 Medium Assurance Claim 宣告建立另一個名為 mediumassurancemapping 的宣告對應。

在 Trey Research 中建立並啟用群組宣告

本節包括下列程序:

在 Trey Research 中建立兩個群組宣告

在 adfsresource 電腦上完成下列程序以在 Trey Research 中建立兩個群組宣告,用以代表源自 A. Datum 樹系的安全性等級具名宣告。

在 Trey Research 中建立兩個群組宣告

  1. 按一下 [開始],指向 [系統管理工具],然後按一下 [Active Directory Federation Services]

  2. 依序按兩下 [Federation Service][信任原則][我的組織],在 [組織宣告] 上按一下滑鼠右鍵,指向 [新增],然後按一下 [組織宣告]

  3. [建立新組織宣告] 對話方塊的 [宣告名稱] 中,輸入 A. Datum High Assurance Claim

  4. 確認已選取 [群組宣告],然後按一下 [確定]。重複以上步驟,建立另一個名為 A. Datum Medium Assurance Claim 的群組宣告。

在 Trey Research 中建立兩個宣告對應

在 adfsresource 電腦上完成下列程序以建立兩個連入的群組宣告對應,用以將 A. Datum 中的安全性等級具名宣告對應至您剛剛在 Trey Research 中建立之相對應的安全性等級具名宣告。

在 Trey Research 中建立宣告對應

  1. 按一下 [開始],指向 [系統管理工具],然後按一下 [Active Directory Federation Services]

  2. 按兩下 [Federation Service],按兩下 [信任原則],按兩下 [夥伴組織],按兩下 [帳戶夥伴],在 [A. Datum] 上按一下滑鼠右鍵,指向 [新增],然後按一下 [連入群組宣告對應]

  3. [建立新連入群組宣告對應] 對話方塊的 [連入群組宣告名稱] 中,輸入 highassurancemapping

    note備註
    此值有大小寫之別。它必須完全符合您在帳戶夥伴組織 A. Datum 之連出群組宣告對應中指定的值。

  4. [組織群組宣告] 中按一下 [A. Datum High Assurance Claim],然後按一下 [確定]。重複以上步驟,針對對應至名為 A. Datum Medium Assurance Claim 的相對應宣告建立另一個名為 mediumassurancemapping 的宣告對應。

在 Trey Research 中啟用宣告

在 adfsresource 電腦上完成下列程序,啟用 Trey Research 中的新群組宣告以便和範例宣告感知 (Claims-Aware) 應用程式一起使用。

在 Trey Research 中啟用宣告

  1. 在 Active Directory Federation Services 主控台樹狀目錄的 [應用程式] 資料夾中,按一下 [宣告感知 (Claims-Aware) 應用程式]

  2. [A. Datum High Assurance Claim] 上按一下滑鼠右鍵,然後按一下 [啟用]。針對 A. Datum Medium Assurance Claim 宣告重複這個步驟。

步驟 5:從用戶端電腦存取範例應用程式

在此步驟中,您將測試先前對應至特定使用者帳戶的其他驗證機制保證等級。您將存取宣告感知 (Claims-Aware) 應用程式,並檢視在您使用其他使用者帳戶 (作為使用其他驗證方法來登入的使用者) 存取應用程式時,該應用程式所識別的群組成員資格。本步驟節包括下列程序:

若要執行此步驟中的程序,請先讓使用者帳戶 adatum\alansh、adatum\cassieh 與 adatum\toddmead 成為用戶端電腦的本機 Administrators 群組成員。

note備註
如果您在存取宣告感知 (Claims-Aware) 應用程式時出現問題,請考慮執行 iisreset 或重新啟動 adfsweb 電腦。同時,請確保 adfsclient 電腦在「受信任的根憑證授權單位」存放區中擁有 adfsaccount、adfsresource 與 adfsweb 安全通訊端層 (SSL) 憑證。如果您的憑證存放區中找不到這些憑證,請再次執行本指南中的步驟 3。接著,再次嘗試存取應用程式。

不使用智慧卡存取範例應用程式 (低度保證)

完成下列程序,以從尚未發行智慧卡的用戶端電腦中存取範例宣告感知 (Claims-Aware) 應用程式。

不使用智慧卡存取範例應用程式

  1. 以 alansh 身分登入 adfsclient 電腦。

  2. 開啟瀏覽器視窗,然後進入 https://adfsweb.treyresearch.net/claimapp/。提示您有關主領域時,按一下 [A. Datum Corporation],再按一下 [提交]

  3. 此時瀏覽器中會出現 [SSO 範例應用程式]。在範例應用程式的 [SingleSignOnIdentity.SecurityPropertyCollection] 區段中,您會看到群組宣告值。當您完成「Windows Server 2008 R2 中的 AD FS 逐步指南」(http://go.microsoft.com/fwlink/?LinkId=133009) 中的指示時,便能建立此宣告。

使用中度保證智慧卡存取範例應用程式

完成下列程序,以從已發行智慧卡 (內含中度保證憑證) 的用戶端電腦中存取範例宣告感知 (Claims-Aware) 應用程式。

使用中度保證智慧卡存取範例應用程式

  1. 插入 Todd Meadows 的智慧卡。

  2. 使用 toddmead 的智慧卡選項登入 adfsclient 電腦。您可能需要依序按一下 [開始]、向右鍵與 [切換使用者] 才會看到這個智慧卡登入選項。當系統提示您輸入個人識別碼 (PIN) 時,請加以輸入。

  3. 開啟瀏覽器視窗,然後進入 https://adfsweb.treyresearch.net/claimapp/。提示您有關主領域時,按一下 [A. Datum Corporation],再按一下 [提交]

  4. 此時瀏覽器中會出現 [SSO 範例應用程式]。在範例應用程式的 [SingleSignOnIdentity.SecurityPropertyCollection] 區段中,您會看到 A. Datum Medium Assurance Claim

使用高度保證智慧卡存取範例應用程式

完成下列程序,以從已發行智慧卡 (內含高度保證憑證) 的用戶端電腦中存取範例宣告感知 (Claims-Aware) 應用程式。

使用高度保證智慧卡存取範例應用程式

  1. 插入 Cassie Hicks 的智慧卡。

  2. 使用 cassiehi 的智慧卡選項登入 adfsclient 電腦。您可能需要依序按一下 [開始]、向右鍵與 [切換使用者] 才會看到這個智慧卡登入選項。出現提示時,請輸入 PIN 碼。

  3. 開啟瀏覽器視窗,然後進入 https://adfsweb.treyresearch.net/claimapp/。提示您有關主領域時,按一下 [A. Datum Corporation],再按一下 [提交]

  4. 此時瀏覽器中會出現 [SSO 範例應用程式]。在範例應用程式的 [SingleSignOnIdentity.SecurityPropertyCollection] 區段中,您會看到 A. Datum High Assurance Claim

存取範例應用程式之後,請將 cassiehi 與 toddmead 帳戶新增至 adatum.com 網域中的 treyclaimappusers 安全性群組,然後再次嘗試存取範例應用程式。將這些帳戶新增至 treyclaimappusers 安全性群組並重新連線應用程式後,您會在瀏覽器視窗中看到宣告值 cassiehi@adatum.com 與 toddmead@adatum.com,及其個別的保證值宣告。

note備註
treyclaimappusers 群組已在「Windows Server 2008 R2 中的 AD FS 逐步指南」(http://go.microsoft.com/fwlink/?LinkId=133009) 中的程序建立。

本文對您有任何幫助嗎?
(剩餘 1500 個字元)
感謝您提供意見

社群新增項目

新增
顯示:
© 2014 Microsoft