등록 중 수집된 특성 유효성 검사

완료됨

연습 - 등록 중 수집된 특성 유효성 검사

사용자 지정 인증 확장은 특성 모음 제출 이벤트를 지원합니다. 이 이벤트를 사용하면 등록 중에 사용자로부터 수집된 특성에 대한 유효성 검사를 수행할 수 있습니다. 식료품 웹 사이트의 경우, 사용자 지정 인증 확장 REST API에 컴파일된 국가 목록과 도시 이름의 유효성을 검사합니다. 또한, 도시에 블록이 포함되어 있는 경우 Microsoft Entra External ID는 블록 페이지를 표시합니다. 도시에 수정이 포함되어 있으면 Microsoft Entra External ID는 일부 특성(표시 이름 및 도시)을 수정합니다.

참고 항목

등록 중에 수집된 특성의 유효성 검사를 구성하려면 최소한 인증 확장성 관리자 디렉터리 역할이 필요합니다.

이 역할은 권한 있는 역할입니다. 권한 있는 역할을 사용하기 위한 모범 사례에 관해 읽어 보세요.

의견이 있으신가요? 여러분의 개념 증명 프로젝트가 어떻게 진행되고 있는지 알려 주세요. 귀하의 의견을 듣고 싶습니다.

다양한 이벤트에 대한 Microsoft Entra External ID의 사용자 지정 인증 확장 기능을 사용하는 방법을 보여 주는 .NET C# 웹 API의 예를 여기에서 볼 수도 있습니다.

  1. Microsoft Entra External ID에서 REST API를 호출하는 데 사용되는 사용자 지정 인증 확장을 등록하는 것으로 시작합니다. 사용자 지정 인증 확장에는 REST API 엔드포인트, REST API에서 구문 분석하는 특성 모음 시작 작업 및 REST API에 인증하는 방법에 대한 정보가 포함되어 있습니다. Microsoft Entra 관리 센터에 로그인하고 외부 ID>사용자 지정 인증 확장으로 이동합니다. 참고로, 애플리케이션>엔터프라이즈 애플리케이션>사용자 지정 인증 확장을 찾아볼 수도 있습니다. 그런 다음 사용자 지정 확장 만들기를 선택합니다.

    도구 모음에서 사용자 지정 확장 만들기라는 단추를 강조 표시한 외부 ID 사용자 지정 인증 확장 블레이드의 스크린샷.

  2. 기본에서 AttributeCollectionSubmit 이벤트를 선택한 다음 다음을 선택합니다.

    특성 모음 제출이라는 이벤트 유형을 강조 표시한 새 사용자 지정 확장 블레이드 만들기의 기본 탭 스크린샷.

  3. 엔드포인트 구성에서 다음 속성을 입력합니다.

    • 이름 - 사용자 지정 인증 확장의 이름입니다(예: 등록 사용자 입력 유효성 검사).

    • 대상 URL - REST API의 URL입니다.

    • 시간 제한(밀리초) - 실패 시 API 엔드포인트가 호출되는 최대 다시 시도 횟수입니다. 비어 있으면 이 값은 서비스 기본값으로 기본 설정됩니다.

    • 최대 다시 시도 횟수 - 실패 시 API 엔드포인트가 호출되는 최대 다시 시도 횟수입니다. 비어 있으면 이 값은 서비스 기본값으로 기본 설정됩니다.

    • 설명 - 사용자 지정 인증 확장에 대한 설명입니다. 계속하려면 다음을 선택합니다.

      새 사용자 지정 확장 블레이드 만들기의 Endpoint Configuration 탭에서 필드 이름, 대상 URL, 시간 제한(밀리초), 최대 다시 시도 및 설명을 보여 주는 스크린샷.

  4. 사용자 지정 인증 확장과 REST API 간의 통신이 적절하게 보호되도록 하려면 여러 가지 보안 제어를 적용해야 합니다. 첫 번째 단계는 Microsoft Entra External ID에서 사용하는 애플리케이션을 만들거나 선택하는 것입니다. OAuth 2.0 클라이언트 자격 증명 부여 흐름을 사용하여 API 엔드포인트에 대한 호출을 보호합니다.

    이것이 처음으로 사용하는 사용자 지정 인증 확장인 경우 TokenIssuanceStart 이벤트가 어떻게 구성되었는지 확인합니다. 이미 사용자 지정 인증 확장을 구성했으므로 API 인증에서 이 디렉터리에서 기존 앱 등록 선택 옵션을 선택합니다.

    새 사용자 지정 확장 블레이드 만들기의 API 인증 탭에서 이 디렉터리의 기존 앱 등록 선택과 앱 등록 유형 아래의 애플리케이션 선택이라는 제목의 라디오 단추 옵션을 강조 표시하는 스크린샷.

  5. 다른 사용자 지정 인증 확장에 대해 구성한 애플리케이션을 선택하고 선택을 선택합니다.

    오른쪽에 열린 애플리케이션 선택 창에서 사용자 지정 인증 확장 보안 앱이라는 제목의 애플리케이션이 선택된 것을 강조 표시하는 스크린샷.

  6. 구성을 검토하고 만들기를 선택하면 구성한 사용자 지정 인증 확장과 선택한 관련 애플리케이션이 등록됩니다.

    새 사용자 지정 확장 블레이드 만들기의 검토 탭에서 엔드포인트 구성 및 API 인증 구성을 보여 주는 스크린샷.

  7. 이 시점에서 사용자 지정 인증 확장은 테넌트에서 구성되었지만 어떤 등록 페이지에서도 사용되지 않습니다. 다음으로, 사용자 지정 인증 확장을 하나 이상의 사용자 흐름과 연결합니다. 그렇게 하려면 ID>외부 ID>사용자 흐름으로 이동합니다. 그런 다음 목록에서 사용자 흐름을 선택합니다.

    사용자 흐름 그리드 목록에서 기본값이라는 제목의 사용자 흐름을 강조 표시한 외부 ID 사용자 흐름 블레이드의 스크린샷.

  8. 메뉴에서 사용자 지정 인증 확장을 선택합니다. 사용자 지정 인증 확장을 연결하려면 사용자로부터 정보를 수집하기 전 이벤트를 선택합니다.

    사용자가 정보를 제출할 때 옆에 있는 편집 단추를 강조 표시한 기본값이라는 사용자 흐름에 대한 사용자 지정 인증 확장 블레이드의 스크린샷.

  9. OnAttributeCollectionStart 이벤트에 대해 구성된 사용자 지정 확장이 표시됩니다. 특성 모음 시작 이벤트 중 하나를 선택한 다음 선택을 선택하여 변경 내용을 저장합니다.

    오른쪽에 열려 있는 사용자 지정 확장 창에서 등록 사용자 입력의 유효성 검사 및 해당 URL이 사용자 지정 확장 선택을 위한 드롭다운 메뉴에 강조 표시된 스크린샷.

모두 완료되었습니다. OnAttributeCollectionSubmit 형식의 사용자 지정 인증 확장을 만든 다음 이를 사용자 흐름과 연결했습니다.

1. 사용자 지정 인증 확장 애플리케이션 등록

이것이 처음으로 사용하는 사용자 지정 인증 확장인 경우 사용자 지정 인증 확장 애플리케이션을 등록합니다.

2. 사용자 지정 인증 확장 등록

다음으로, 사용자 지정 인증 확장을 등록합니다. 사용자 지정 인증 확장을 등록하려면 사용자가 만든 사용자 지정 인증 확장 보안 앱과 REST API 엔드포인트를 연결합니다. 다음 값을 사용자 고유 값으로 바꿉니다. - {app-ID}를 이전 호출 사용자 지정 인증 확장 보안 앱의 앱 ID로 바꿉니다. - {REST-API-domain}을 REST API 도메인 이름인 {Endpoint-URL}과 ​​REST API 엔드포인트의 RUL로 바꿉니다.

POST https://graph.microsoft.com/beta/identity/customAuthenticationExtensions
{
    "@odata.type": "#microsoft.graph.onAttributeCollectionSubmitCustomExtension",
    "displayName": "Validate sign-up user input",
    "description": "Validate user input including the city name and may ask the user to correct the data or block the user",
    "behaviorOnError": null,
    "authenticationConfiguration": {
        "@odata.type": "#microsoft.graph.azureAdTokenAuthentication",
        "resourceId": "api://{REST-API-domain}/{app-ID}"
    },
    "endpointConfiguration": {
        "@odata.type": "#microsoft.graph.httpRequestEndpoint",
        "targetUrl": "{Endpoint-URL}"
    },
    "clientConfiguration": {
        "timeoutInMilliseconds": null,
        "maximumRetries": null
    }
}
예시
POST https://graph.microsoft.com/beta/identity/customAuthenticationExtensions
{
    "@odata.type": "#microsoft.graph.onAttributeCollectionSubmitCustomExtension",
    "displayName": "Validate sign-up user input",
    "description": "Validate user input including the city name and may ask the user to correct the data or block the user",
    "behaviorOnError": null,
    "authenticationConfiguration": {
        "@odata.type": "#microsoft.graph.azureAdTokenAuthentication",
        "resourceId": "api://auth-api.woodgrovedemo.com/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1"
    },
    "endpointConfiguration": {
        "@odata.type": "#microsoft.graph.httpRequestEndpoint",
        "targetUrl": "https://auth-api.woodgrovedemo.com/OnAttributeCollectionSubmit"
    },
    "clientConfiguration": {
        "timeoutInMilliseconds": null,
        "maximumRetries": null
    }
}
2.1 사용자 지정 인증 확장 ID 복사

응답에서 id의 값을 복사합니다. 예를 들면 다음과 같습니다.

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#identity/customAuthenticationExtensions/$entity",
    "@odata.type": "#microsoft.graph.onAttributeCollectionStartCustomExtension",
    "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "displayName": "Prepopulate sign-up attributes",
    "description": "Prepopulate sign-up attributes from a REST API",
}
2.2 인증 이벤트 수신기 만들기

사용자 지정 인증 확장을 등록한 후 인증 이벤트 수신기를 만듭니다. 다음 JSON에서 {Custom-auth-extension-ID}를 방금 만든 사용자 지정 인증 확장으로 바꿉니다.

POST https://graph.microsoft.com/beta/identity/authenticationEventListeners
{
    "@odata.type": "#microsoft.graph.onAttributeCollectionSubmitListener",
    "conditions": {
        "applications": {
            "includeAllApplications": false,
            "includeApplications": []
        }
    },
    "priority": 500,
    "handler": {
        "@odata.type": "#microsoft.graph.onAttributeCollectionSubmitCustomExtensionHandler",
        "customExtension": {
            "id": "{Custom-auth-extension-ID}"
        }
    }
}
예시
POST https://graph.microsoft.com/beta/identity/authenticationEventListeners
{
    "@odata.type": "#microsoft.graph.onAttributeCollectionSubmitListener",
    "conditions": {
        "applications": {
            "includeAllApplications": false,
            "includeApplications": []
        }
    },
    "priority": 500,
    "handler": {
        "@odata.type": "#microsoft.graph.onAttributeCollectionSubmitCustomExtensionHandler",
        "customExtension": {
            "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
        }
    }
}

사용자 흐름을 업데이트합니다. 다음 요청에서 다음 값을 사용자 고유 값으로 바꿉니다. - {user-flow-ID}사용자 흐름 ID로 바꿉니다. - {Custom-auth-extension-ID}를 방금 만든 사용자 지정 인증 확장으로 바꿉니다.

PUT https://graph.microsoft.com/beta/identity/authenticationEventsFlows/{user-flow-ID}/microsoft.graph.externalUsersSelfServiceSignUpEventsFlow/onAttributeCollectionSubmit/microsoft.graph.onAttributeCollectionSubmitCustomExtensionHandler/customExtension/$ref
{
    "@odata.id": "https://graph.microsoft.com/beta/identity/customAuthenticationExtensions/{Custom-auth-extension-ID}"
}
예시
PUT https://graph.microsoft.com/beta//identity/authenticationEventsFlows/bbbbbbbb-1111-2222-3333-cccccccccccc/microsoft.graph.externalUsersSelfServiceSignUpEventsFlow/onAttributeCollectionSubmit/microsoft.graph.onAttributeCollectionSubmitCustomExtensionHandler/customExtension/$ref
{
    "@odata.id": "https://graph.microsoft.com/beta/identity/customAuthenticationExtensions/aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
}