AD FS를 사용하여 Azure MFA를 인증 공급자로 구성

조직이 Azure AD를 사용하여 페더레이션되는 경우 온-프레미스와 클라우드 모두에서 Azure Multi-Factor Authentication을 사용하여 AD FS 리소스를 보호할 수 있습니다. Azure MFA를 사용하면 암호를 제거하고 인증하는 보다 안전한 방법을 제공할 수 있습니다. 이제 Windows Server 2016 시작하여 기본 인증을 위해 Azure MFA를 구성하거나 추가 인증 공급자로 사용할 수 있습니다.

Windows Server 2012 R2의 AD FS와 달리 AD FS 2016 Azure MFA 어댑터는 Azure AD와 직접 통합되며 온-프레미스 Azure MFA 서버가 필요하지 않습니다. Azure MFA 어댑터는 Windows Server 2016 위해 기본 제공되므로 추가 설치가 필요하지 않습니다.

AD FS를 사용하여 Azure MFA에 대한 사용자 등록

AD FS는 인라인 "증명"이나 전화 번호 또는 모바일 앱과 같은 Azure MFA 보안 확인 정보의 등록을 지원하지 않습니다. 즉, 사용자는 Azure MFA를 https://account.activedirectory.windowsazure.com/Proofup.aspx 사용하여 AD FS 애플리케이션에 인증하기 전에 방문하여 증명을 받아야 합니다. Azure AD에서 아직 증명하지 않은 사용자가 AD FS에서 Azure MFA로 인증을 시도하면 AD FS 오류가 발생합니다. AD FS 관리자는 이 오류 환경을 사용자 지정하여 사용자를 대신 교정 페이지로 안내할 수 있습니다. onload.js 사용자 지정을 사용하여 AD FS 페이지 내에서 오류 메시지 문자열을 검색하고 사용자에게 방문 https://aka.ms/mfasetup하도록 안내하는 새 메시지를 표시한 다음 인증을 다시 시도할 수 있습니다. 자세한 지침은 이 문서의 아래 "사용자가 MFA 확인 방법을 등록하도록 안내하는 AD FS 웹 페이지 사용자 지정"을 참조하세요.

참고

이전에는 사용자가 등록을 위해 MFA를 사용하여 인증해야 했습니다(예: 바로 가기https://aka.ms/mfasetuphttps://account.activedirectory.windowsazure.com/Proofup.aspx통해 방문). 이제 MFA 확인 정보를 아직 등록하지 않은 AD FS 사용자는 기본 인증(예: AD FS 웹 페이지를 통한 사용자 이름 및 암호 Windows)만 사용하여 바로 가기 https://aka.ms/mfasetup 를 통해 Azure AD의 교정 페이지에 액세스할 수 있습니다. 사용자에게 구성된 확인 방법이 없는 경우 Azure AD는 사용자에게 "관리자가 추가 보안 확인을 위해 이 계정을 설정해야 했습니다"라는 메시지가 표시되는 인라인 등록을 수행하고 사용자는 "지금 설정"을 선택할 수 있습니다. 이미 하나 이상의 MFA 확인 방법을 구성한 사용자에게는 증명 페이지를 방문할 때 MFA를 제공하라는 메시지가 계속 표시됩니다.

기본 인증으로 Azure MFA

AD FS에서 Azure MFA를 기본 인증으로 사용하는 몇 가지 좋은 이유가 있습니다.

  • Azure AD, Office 365 및 기타 AD FS 앱에 로그인하기 위한 암호를 방지하려면
  • 암호에 앞서 확인 코드와 같은 추가 요소를 요구하여 암호 기반 로그인을 보호하려면

이러한 이점을 얻기 위해 AD FS에서 기본 인증 방법으로 Azure MFA를 사용하려는 경우 AD FS의 추가 요소를 묻는 메시지를 표시하여 "true MFA"를 포함하여 Azure AD 조건부 액세스를 사용하는 기능을 유지하려고 할 수도 있습니다.

이제 온-프레미스에서 MFA를 수행하도록 Azure AD 도메인 설정을 구성하여 이 작업을 수행할 수 있습니다("SupportsMfa"를 $True 설정). 이 구성에서 AD FS는 필요한 조건부 액세스 시나리오에 대해 추가 인증 또는 "진정한 MFA"를 수행하라는 Azure AD의 메시지를 표시할 수 있습니다.

위에서 설명한 대로 아직 등록하지 않은 AD FS 사용자(구성된 MFA 확인 정보)는 사용자 지정된 AD FS 오류 페이지를 통해 확인 정보를 구성한 다음 AD FS 로그인을 다시 시도하라 https://aka.ms/mfasetup 는 메시지를 표시해야 합니다. Azure MFA를 기본 요소로 간주하기 때문에 초기 구성 후 사용자는 Azure AD에서 확인 정보를 관리하거나 업데이트하거나 MFA가 필요한 다른 리소스에 액세스하기 위한 추가 요소를 제공해야 합니다.

참고

AD FS 2019에서는 Active Directory 클레임 공급자 트러스트에 대한 앵커 클레임 유형을 수정하고 windowsaccountname에서 UPN으로 수정해야 합니다. 아래에 제공된 PowerShell cmdlet을 실행합니다. 이는 AD FS 팜의 내부 작동에 영향을 주지 않습니다. 이 변경 내용이 변경되면 일부 사용자에게 자격 증명을 다시 입력하라는 메시지가 표시될 수 있습니다. 다시 로그인하면 최종 사용자에게 차이가 표시되지 않습니다.

Set-AdfsClaimsProviderTrust -AnchorClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" -TargetName "Active Directory"

Office 365 추가 인증으로 Azure MFA

AD FS용 Azure MFA 어댑터를 사용하면 사용자가 AD FS에서 MFA를 수행할 수 있습니다. Azure AD 리소스를 보호하려면 조건부 액세스 정책을 통해 MFA를 요구하고, 도메인 설정 SupportsMfa를 $True로 설정하고, 사용자가 2단계 인증을 성공적으로 수행했을 때 multipleauthn 클레임을 내보내는 것이 좋습니다.

위에서 설명한 대로 아직 등록하지 않은 AD FS 사용자(구성된 MFA 확인 정보)는 사용자 지정된 AD FS 오류 페이지를 통해 확인 정보를 구성한 다음 AD FS 로그인을 다시 시도하라 https://aka.ms/mfasetup 는 메시지를 표시해야 합니다.

필수 구성 요소

AD fs 인증을 위해 Azure MFA를 사용 하는 경우 다음 필수 조건이 필요 합니다.

참고

Azure AD와 Azure MFA는 Azure AD Premium 및 Enterprise Mobility Suite (EMS)에 포함 됩니다. 이러한 경우에 개별 구독을 설치할 필요가 없습니다.

AD FS 서버를 구성 합니다.

AD FS에 대 한 Azure MFA에 대 한 구성을 완료 하기 위해 설명 된 단계를 사용 하 여 각 AD FS 서버를 구성 해야 합니다.

참고

이 단계에서 수행 되는 확인 모든 팜의 AD FS 서버입니다. 팜에 여러 AD FS 서버가 있는 경우 Azure AD PowerShell을 사용하여 필요한 구성을 원격으로 수행할 수 있습니다.

1단계: cmdlet을 사용하여 New-AdfsAzureMfaTenantCertificate 각 AD FS 서버에서 Azure MFA에 대한 인증서 생성

가장 먼저 해야 할 인증서를 사용 하 여 Azure MFA에 대 한 생성 됩니다. 이렇게 하려면 PowerShell을 사용 합니다. 로컬 컴퓨터 인증서 저장소에 생성 된 인증서를 찾을 수 및 Azure AD 디렉터리의 TenantID를 포함 하는 주체 이름으로 표시 되어 있습니다.

Screenshot of the certificate store of a local machine showing the generated certificate.

TenantID Azure AD에서 디렉터리의 이름의 않음을 유의 하십시오. 다음 PowerShell cmdlet를 사용 하 여 새 인증서를 생성 합니다. $certbase64 = New-AdfsAzureMfaTenantCertificate -TenantID <tenantID>

Screenshot of the PowerShell window showing the cmdlet above.

2단계: Azure Multi-Factor Auth 클라이언트 서비스 주체에 새 자격 증명 추가

AD FS 서버가 Azure Multi-Factor Auth 클라이언트와 통신할 수 있도록 하려면 Azure Multi-Factor Auth 클라이언트의 서비스 주체에 자격 증명을 추가해야 합니다. 사용 하 여 생성 된 인증서는 New-AdfsAzureMFaTenantCertificate cmdlet이 자격이 증명으로 사용 합니다. PowerShell을 사용하여 다음을 수행하여 Azure Multi-Factor Auth 클라이언트 서비스 주체에 새 자격 증명을 추가합니다.

참고

이 단계를 완료하려면 PowerShell을 사용하여 Connect-MsolServiceAzure AD 인스턴스에 연결해야 합니다. 이 단계에서는 PowerShell을 통해 이미 연결 되어 가정 합니다. 자세한 내용은 다음을 참조하세요 Connect-MsolService.

Azure Multi-factor Auth 클라이언트에 대 한 새 자격 증명으로 인증서를 설정

New-MsolServicePrincipalCredential -AppPrincipalId 981f26a1-7f43-403b-a875-f8b09b8cd720 -Type asymmetric -Usage verify -Value $certBase64

중요

이 명령은 팜의 모든 AD FS 서버에서 실행해야 합니다. Azure AD MFA는 Azure Multi-Factor Auth 클라이언트에 대한 새 자격 증명으로 설정된 인증서가 없는 서버에서 실패합니다.

참고

981f26a1-7f43-403b-a875-f8b09b8cd720은 Azure Multi-Factor Auth 클라이언트의 GUID입니다.

AD FS 팜 구성

각 AD FS 서버에서 이전 섹션을 완료한 후에는 Set-AdfsAzureMfaTenant cmdlet을 사용하여 Azure 테넌트 정보를 설정합니다. 이 cmdlet은 AD FS 팜에 대해 한 번만 실행 해야 합니다.

PowerShell 프롬프트를 열고 Set-AdfsAzureMfaTenant cmdlet을 사용하여 사용자 고유의 tenantId를 입력합니다. Microsoft Azure Government 클라우드를 사용하는 고객의 경우 매개 변수를 추가합니다.-Environment USGov

참고

이러한 변경 내용이 적용되기 전에 팜의 각 서버에서 AD FS 서비스를 다시 시작해야 합니다. 영향을 최소화하려면 각 AD FS 서버를 NLB 회전에서 한 번에 하나씩 꺼내 모든 연결이 드레이닝될 때까지 기다립니다.

Set-AdfsAzureMfaTenant -TenantId <tenant ID> -ClientId 981f26a1-7f43-403b-a875-f8b09b8cd720

Screenshot of the PowerShell window showing the warning message received after running the Set-AdfsAzureMfaTenant cmdlet.

최신 서비스 팩이 없는 Windows Server는 Set-AdfsAzureMfaTenant cmdlet에 대한 매개 변수를 지원하지 -Environment 않습니다. Azure Government 클라우드를 사용하고 이전 단계가 누락 -Environment 된 매개 변수로 인해 Azure 테넌트 구성에 실패한 경우 다음 단계를 완료하여 레지스트리 항목을 수동으로 만듭니다. 이전 cmdlet이 테넌트 정보를 올바르게 등록했거나 Azure Government 클라우드에 없는 경우 다음 단계를 건너뜁니다.

  1. AD FS 서버에서 레지스트리 편집기를 엽니다.

  2. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ADFS로 이동합니다. 다음 레지스트리 키 값을 만듭니다.

    레지스트리 키
    SasUrl https://adnotifications.windowsazure.us/StrongAuthenticationService.svc/Connector
    StsUrl https://login.microsoftonline.us
    ResourceUri https://adnotifications.windowsazure.us/StrongAuthenticationService.svc/Connector
  3. 이러한 변경 내용이 적용되기 전에 팜의 각 서버에서 AD FS 서비스를 다시 시작합니다. 영향을 최소화하려면 각 AD FS 서버를 NLB 회전에서 한 번에 하나씩 꺼내 모든 연결이 드레이닝될 때까지 기다립니다.

그런 다음 Azure MFA를 인트라넷 및 엑스트라넷 사용에 대 한 기본 인증 방법으로 사용할 수 있는지 표시 됩니다.

Screenshot of the Edit Authentication Methods dialog box showing the Azure M F A option highlighted in both the Extranet and Intranet sections.

Azure MFA를 보조 인증 방법으로 사용하려는 경우 인증 방법 편집 상자에서 다단계 탭(AD FS 2019의 추가 탭)을 선택하고 사용하도록 설정되어 있는지 확인합니다. 그렇지 않으면 "유효한 강력한 인증 방법을 찾을 수 없습니다. 적절한 강력한 인증 공급자를 구성하고 사용하도록 설정하려면 관리자에게 문의하세요."

AD FS Azure MFA 인증서 갱신 및 관리

다음 지침에서는 AD FS 서버에서 Azure MFA 인증서를 관리하는 방법을 안내합니다. 기본적으로 Azure MFA를 사용하여 AD FS를 구성하는 경우 PowerShell cmdlet을 통해 New-AdfsAzureMfaTenantCertificate 생성된 인증서는 2년 동안 유효합니다. 인증서 만료가 얼마나 가까운지 확인한 다음 새 인증서를 갱신하고 설치하려면 다음 절차를 사용합니다.

AD FS Azure MFA 인증서 만료 날짜 평가

각 AD FS 서버의 로컬 컴퓨터 내 저장소에 발급자 및 제목에 "OU=Microsoft AD FS Azure MFA"가 있는 자체 서명된 인증서가 있습니다. Azure MFA 인증서입니다. 각 AD FS 서버에서 이 인증서의 유효 기간을 확인하여 만료 날짜를 확인합니다.

각 AD FS 서버에서 새 AD FS Azure MFA 인증서 만들기

인증서의 유효 기간이 거의 끝나갈 경우 각 AD FS 서버에서 새 Azure MFA 인증서를 생성하여 갱신 프로세스를 시작합니다. PowerShell 명령 창에서 다음 cmdlet을 사용하여 각 AD FS 서버에 새 인증서를 생성합니다.

주의

인증서가 이미 만료된 경우 다음 명령에 매개 변수를 추가 -Renew $true 하지 마세요. 이 시나리오에서는 만료된 기존 인증서가 대신 새 인증서로 대체되고 추가 인증서가 만들어집니다.

PS C:\> $newcert = New-AdfsAzureMfaTenantCertificate -TenantId <tenant id such as contoso.onmicrosoft.com> -Renew $true

인증서가 아직 만료되지 않은 경우 이후 2일에서 2일 + 2년까지 유효한 새 인증서가 생성됩니다. AD FS 및 Azure MFA 작업은 이 cmdlet 또는 새 인증서의 영향을 받지 않습니다. (참고: 2일 지연은 의도적이며 AD FS가 Azure MFA에 사용하기 시작하기 전에 테넌트에서 새 인증서를 구성하기 위해 아래 단계를 실행하는 시간을 제공합니다.)

Azure AD 테넌트에서 각 새 AD FS Azure MFA 인증서 구성

Azure AD PowerShell 모듈을 사용하여 각 새 인증서(각 AD FS 서버)에 대해 다음과 같이 Azure AD 테넌트 설정을 업데이트합니다(참고: 다음 명령을 실행하려면 먼저 테넌트에 Connect-MsolService 연결해야 함).

PS C:/> New-MsolServicePrincipalCredential -AppPrincipalId 981f26a1-7f43-403b-a875-f8b09b8cd720 -Type Asymmetric -Usage Verify -Value $newcert

이전 인증서가 이미 만료된 경우 AD FS 서비스를 다시 시작하여 새 인증서를 선택합니다. 인증서가 만료되기 전에 갱신한 경우 AD FS 서비스를 다시 시작할 필요가 없습니다.

새 인증서가 Azure MFA에 사용되는지 확인합니다.

새 인증서가 유효해지면 AD FS에서 인증서를 선택하고 몇 시간에서 하루 이내에 Azure MFA에 대한 각 인증서 사용을 시작합니다. 이 문제가 발생하면 각 서버에서 다음 정보가 포함된 AD FS 관리자 이벤트 로그에 기록된 이벤트가 표시됩니다.

Log Name:      AD FS/Admin
Source:        AD FS
Date:          2/27/2018 7:33:31 PM
Event ID:      547
Task Category: None
Level:         Information
Keywords:      AD FS
User:          DOMAIN\adfssvc
Computer:      ADFS.domain.contoso.com
Description:
The tenant certificate for Azure MFA has been renewed.

TenantId: contoso.onmicrosoft.com.
Old thumbprint: 7CC103D60967318A11D8C51C289EF85214D9FC63.
Old expiration date: 9/15/2019 9:43:17 PM.
New thumbprint: 8110D7415744C9D4D5A4A6309499F7B48B5F3CCF.
New expiration date: 2/27/2020 2:16:07 AM.

사용자가 MFA 확인 방법을 등록하도록 안내하는 AD FS 웹 페이지 사용자 지정

다음 예제를 사용하여 아직 증명하지 않은 사용자(구성된 MFA 확인 정보)에 대한 AD FS 웹 페이지를 사용자 지정합니다.

오류 찾기

첫째, 사용자에게 확인 정보가 없는 경우 AD FS가 반환할 몇 가지 다른 오류 메시지가 있습니다. Azure MFA를 기본 인증으로 사용하는 경우 증명되지 않은 사용자에게 다음 메시지가 포함된 AD FS 오류 페이지가 표시됩니다.

    <div id="errorArea">
        <div id="openingMessage" class="groupMargin bigText">
            An error occurred
        </div>
        <div id="errorMessage" class="groupMargin">
            Authentication attempt failed. Select a different sign in option or close the web browser and sign in again. Contact your administrator for more information.
        </div>

추가 인증으로 Azure AD를 시도하는 경우 증명되지 않은 사용자에게 다음 메시지가 포함된 AD FS 오류 페이지가 표시됩니다.

<div id='mfaGreetingDescription' class='groupMargin'>For security reasons, we require additional information to verify your account (mahesh@jenfield.net)</div>
    <div id="errorArea">
        <div id="openingMessage" class="groupMargin bigText">
            An error occurred
        </div>
        <div id="errorMessage" class="groupMargin">
            The selected authentication method is not available for &#39;username@contoso.com&#39;. Choose another authentication method or contact your system administrator for details.
        </div>

오류를 catch하고 페이지 텍스트를 업데이트합니다.

오류를 catch하고 사용자 지정 지침을 표시하려면 AD FS 웹 테마의 일부인 onload.js 파일의 끝에 javascript를 추가하기만 하면 됩니다. 이렇게 하면 다음을 수행할 수 있습니다.

  • 식별 오류 문자열 검색
  • 사용자 지정 웹 콘텐츠를 제공합니다.

참고

onload.js 파일을 사용자 지정하는 방법에 대한 일반적인 지침은 AD FS 로그인 페이지의 고급 사용자 지정 문서를 참조하세요.

다음은 확장할 수 있는 간단한 예제입니다.

  1. 기본 AD FS 서버에서 Windows PowerShell 열고 다음 명령을 실행하여 새 AD FS 웹 테마를 만듭니다.

        New-AdfsWebTheme –Name ProofUp –SourceName default
    
  2. 다음으로 폴더를 만들고 기본 AD FS 웹 테마를 내보냅니다.

       New-Item -Path 'c:\Theme' -ItemType Directory;Export-AdfsWebTheme –Name default –DirectoryPath c:\Theme
    
  3. 텍스트 편집기에서 C:\Theme\script\onload.js 파일 열기

  4. onload.js 파일의 끝에 다음 코드를 추가합니다.

    //Custom Code
    //Customize MFA exception
    //Begin
    
    var domain_hint = "<YOUR_DOMAIN_NAME_HERE>";
    var mfaSecondFactorErr = "The selected authentication method is not available for";
    var mfaProofupMessage = "You will be automatically redirected in 5 seconds to set up your account for additional security verification. Once you have completed the setup, please return to the application you are attempting to access.<br><br>If you are not redirected automatically, please click <a href='{0}'>here</a>."
    var authArea = document.getElementById("authArea");
    if (authArea) {
        var errorMessage = document.getElementById("errorMessage");
        if (errorMessage) {
            if (errorMessage.innerHTML.indexOf(mfaSecondFactorErr) >= 0) {
    
                //Hide the error message
                var openingMessage = document.getElementById("openingMessage");
                if (openingMessage) {
                    openingMessage.style.display = 'none'
                }
                var errorDetailsLink = document.getElementById("errorDetailsLink");
                if (errorDetailsLink) {
                    errorDetailsLink.style.display = 'none'
                }
    
                //Provide a message and redirect to Azure AD MFA Registration Url
                var mfaRegisterUrl = "https://account.activedirectory.windowsazure.com/proofup.aspx?proofup=1&whr=" + domain_hint;
                errorMessage.innerHTML = "<br>" + mfaProofupMessage.replace("{0}", mfaRegisterUrl);
                window.setTimeout(function () { window.location.href = mfaRegisterUrl; }, 5000);
            }
        }
    }
    
    //End Customize MFA Exception
    //End Custom Code
    

    중요

    도메인 이름을 사용하려면 "<YOUR_DOMAIN_NAME_HERE>"를 변경해야 합니다. 예: var domain_hint = "contoso.com";

  5. onload.js 파일 저장

  6. 다음 Windows PowerShell 명령을 입력하여 onload.js 파일을 사용자 지정 테마로 가져옵니다.

    Set-AdfsWebTheme -TargetName ProofUp -AdditionalFileResource @{Uri='/adfs/portal/script/onload.js';path="c:\theme\script\onload.js"}
    
  7. 마지막으로 다음 Windows PowerShell 명령을 입력하여 사용자 지정 AD FS 웹 테마를 적용합니다.

    Set-AdfsWebConfig -ActiveThemeName "ProofUp"
    

다음 단계

AD FS 및 Azure MFA에서 사용하는 TLS/SSL 프로토콜 및 암호 그룹 관리