다음을 통해 공유


Azure API for FHIR에 대한 Azure Active Directory ID 구성

의료 데이터를 사용하는 경우 데이터가 안전하고 권한이 없는 사용자 또는 애플리케이션에서 액세스할 수 없도록 하는 것이 중요합니다. FHIR 서버는 이 데이터 보안을 위해 OAuth 2.0을 사용합니다. Azure API for FHIR 은 OAuth 2.0 ID 공급자의 예인 Azure Active Directory를 사용하여 보호됩니다. 이 문서에서는 FHIR 서버 권한 부여에 대한 개요와 FHIR 서버에 액세스하기 위한 토큰을 가져오는 데 필요한 단계를 제공합니다. 이러한 단계는 모든 FHIR 서버 및 ID 공급자에 적용되지만 이 문서에서는 FHIR 서버로서의 Azure API for FHIR 및 azure Active Directory(Azure AD)를 안내합니다.

액세스 제어 개요

클라이언트 애플리케이션이 Azure API for FHIR에 액세스하려면 액세스 토큰을 제공해야 합니다. 액세스 토큰은 클라이언트에 부여된 클라이언트의 ID 및 역할 및 권한에 대한 정보를 전달하는 서명된 Base64 로 인코딩된 속성(클레임) 컬렉션입니다.

토큰을 가져오는 방법에는 여러 가지가 있지만, 올바른 클레임을 사용하여 적절하게 서명된 토큰인 한, Azure API for FHIR은 토큰을 가져오는 방법을 신경 쓰지 않습니다.

예를 들어 권한 부여 코드 흐름을 사용하는 경우와 같이 FHIR 서버에 액세스하는 경우 다음 네 단계를 수행합니다.

FHIR 권한 부여

  1. 클라이언트는 Azure AD 엔드포인트에 /authorize 요청을 보냅니다. Azure AD 사용자가 적절한 자격 증명(예: 사용자 이름 및 암호 또는 2단계 인증)을 사용하여 인증하는 로그인 페이지로 클라이언트를 리디렉션합니다. 권한 부여 코드 가져오기에 대한 세부 정보를 참조하세요. 인증에 성공하면 권한 부여 코드 가 클라이언트에 반환됩니다. Azure AD 클라이언트 애플리케이션 등록에 구성된 등록된 회신 URL로만 이 권한 부여 코드를 반환할 수 있습니다.
  2. 클라이언트 애플리케이션은 Azure AD 엔드포인트에서 /token액세스 토큰에 대한 권한 부여 코드를 교환합니다. 토큰을 요청할 때 클라이언트 애플리케이션은 클라이언트 암호(애플리케이션 암호)를 제공해야 할 수 있습니다. 액세스 토큰 가져오기에 대한 세부 정보를 참조하세요.
  3. 클라이언트는 모든 환자를 검색하기 위해 Azure API for FHIR(예 GET /Patient: )을 요청합니다. 클라이언트가 요청을 할 때 HTTP 요청 헤더에 액세스 토큰(예 Authorization: Bearer eyJ0e...: )이 포함됩니다. 여기서 eyJ0e... 은 Base64로 인코딩된 액세스 토큰을 나타냅니다.
  4. Azure API for FHIR은 토큰에 적절한 클레임(토큰의 속성)이 포함되어 있음을 확인합니다. 모든 항목이 체크 아웃되면 요청을 완료하고 결과가 포함된 FHIR 번들을 클라이언트에 반환합니다.

Azure API for FHIR은 사용자 자격 증명의 유효성을 검사하는 데 관여하지 않으며 토큰을 발급하지 않는다는 점에 유의해야 합니다. 인증 및 토큰 생성은 Azure AD 수행됩니다. Azure API for FHIR은 토큰이 올바르게 서명되고(인증됨) 적절한 클레임이 있는지 유효성을 검사합니다.

액세스 토큰의 구조

FHIR®(Fast Healthcare Interoperability Resources) 애플리케이션의 개발에는 종종 액세스 문제 디버깅이 포함됩니다. 클라이언트가 Azure API for FHIR에 대한 액세스가 거부된 경우 액세스 토큰의 구조와 토큰의 콘텐츠(클레임)를 검사하기 위해 디코딩할 수 있는 방법을 이해하는 것이 유용합니다.

FHIR 서버는 일반적으로 JSON 웹 토큰 (JWT, "jot"로 발음됨)을 예상합니다. 다음 세 부분으로 구성됩니다.

1부: 다음과 같은 헤더입니다.

    {
      "alg": "HS256",
      "typ": "JWT"
    }

2부: 페이로드(클레임) 예를 들면 다음과 같습니다.

    {
     "oid": "123",
     "iss": "https://issuerurl",
     "iat": 1422779638,
     "roles": [
        "admin"
      ]
    }

3부: 헤더의 Base64로 인코딩된 내용과 페이로드를 연결하고 헤더에 지정된 알고리즘(alg)에 따라 암호화 해시를 계산하여 계산되는 서명입니다. 서버는 ID 공급자로부터 공개 키를 가져오고 이 토큰이 특정 ID 공급자에 의해 발급되었으며 변조되지 않았는지 확인할 수 있습니다.

전체 토큰은 이러한 세 세그먼트의 Base64 인코딩(실제로 Base64 URL 인코딩) 버전으로 구성됩니다. 세 세그먼트는 연결되고 (점)로 . 구분됩니다.

토큰의 예는 다음과 같습니다.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJvaWQiOiIxMjMiLCAiaXNzIjoiaHR0cHM6Ly9pc3N1ZXJ1cmwiLCJpYXQiOjE0MjI3Nzk2MzgsInJvbGVzIjpbImFkbWluIl19.gzSraSYS8EXBxLN_oWnFSRgCzcmJmMjLiuyu5CSpyHI

토큰을 디코딩하고 와 같은 https://jwt.ms도구를 사용하여 검사할 수 있습니다. 토큰을 디코딩한 결과는 다음과 같습니다.

{
  "alg": "HS256",
  "typ": "JWT"
}.{
  "oid": "123",
  "iss": "https://issuerurl",
  "iat": 1422779638,
  "roles": [
    "admin"
  ]
}.[Signature]

액세스 토큰 가져오기

언급했듯이 Azure AD 토큰을 가져오는 방법에는 여러 가지가 있습니다. Azure AD 개발자 설명서에 자세히 설명되어 있습니다.

다음 인증 프로토콜 중 하나를 사용합니다.

토큰을 가져오기 위한 다른 변형(예: 흐름)이 있습니다. 자세한 내용은 Azure AD 설명서를 참조하세요. Azure API for FHIR을 사용하는 경우 Azure CLI를 사용하여 액세스 토큰(예: 디버깅 목적)을 가져오기 위한 몇 가지 바로 가기가 있습니다.

다음 단계

이 문서에서는 Azure AD 사용하여 Azure API for FHIR에 대한 액세스를 보호하는 데 관련된 몇 가지 기본 개념을 알아보았습니다. Azure API for FHIR 서비스를 배포하는 방법에 대한 자세한 내용은

FHIR®은 HL7의 등록 상표이며 HL7 의 권한으로 사용됩니다.