Azure Active Directory와 Hasura JWT의 통합
9911 단어 authenticationazureauthorization
맞춤형 제작의 힘은Hasura와 우리의authn/authz 기능이 다양한 공급자와 실현을 지원할 수 있다는 데 있다.그 결과 실현의 유연성은 다양한 채택 모델, 고려된 서비스 등을 가져왔다.
예를 들어, Azure Active Directory를 Hasura와 통합하는 프로세스입니다.특히 JWT 청구 매핑을 구현하는 과정입니다.
간단히 말하면, 일부 인증 공급자는 사용자가 JWT에 사용자 정의 성명을 추가하는 것을 허락하지 않는다.이 경우 서버는
claims_map
라는 JWT 구성 옵션을 사용하여 기존 선언에 대한 Hasura 세션 변수의 매핑을 JSONPath 또는 문자 값으로 지정할 수 있습니다.claims_map
는 JSON 객체이며 키는 세션입니다.변수와 값은 JSON 경로(JSON 경로에서 지정한 키가 존재하지 않을 때 기본값 옵션이 있음) 또는 텍스트 값일 수 있습니다.이 기능은 documentation에 더 상세한 설명이 있다.
사용자와 협력하여 실현할 때 우리는 예시 절차를 수집하여 이를 어떻게 실현하는지 보여주었고 간단한 프레젠테이션 플랫폼을 구축했다here
주의:Azure 광고 사용에 대한 주의사항은 본고 말미(비B2C 임차인에 대한) 참조
선결 조건
Azure functions core tools 설치됨(Azure 기능 확장이 있는 VScode 권장)
하수라 클라우드 설정
id
, azure_id
와 role
를 포함합니다.x-hasura-user-id
만 사용자 id와 일치하는 인증된 사용자로 제한합니다Azure 함수 설정
$ mkdir <functions-directory-name>
$ cd <functions-directory-name>
$ func init .
$ func new
$ npm install
$ func start
Azure 광고 B2C 구축
https://jwt.ms
를 추가합니다.이것은 Azure JWT를 검사하는 데 유용한 도구입니다.이 새 스트림을 사용하여 올바른 JWT를 생성할 수 있는지 테스트합니다.
https://jwt.ms
로 선택사용자 지정 선언을 포함하도록 Azure AD B2C 설정 수정
local.settings.json
에서 환경 변수를 로컬로 설정합니다.Azure 포털을 통해 prod에 환경 변수를 추가합니다. 기능 응용 프로그램으로 이동하여 설정(설정)에서 환경 변수를 새 응용 프로그램 설정으로 추가합니다.저금하는 것을 잊지 마라!"B2C_1A_signup_signin"
으로 테스트를 진행하여 예상한 성명이 있는 유효한 JWT를 얻었고 사용자가 HasuraAzure 토큰을 사용하기 위해 Hasura 인스턴스 업데이트
HASURA_GRAPHQL_JWT_SECRET
HASURA_GRAPHQL_JWT_SECRET
의 값으로 설정하여 JWK URL을 구성하고 "Claims Mapping" 기능(see more here을 사용하여Azure AD의 성명을 Hasura가 JWT 영패에 필요한 값에 비추도록 한다.{
"jwk_url": "https://<mytenant>.b2clogin.com/<mytenant>.onmicrosoft.com/discovery/v2.0/keys?p=b2c_1a_signup_signin",
"claims_map": {
"x-hasura-allowed-roles": ["user", "admin"],
"x-hasura-default-role": { "path": "$.extension_hasura_role" },
"x-hasura-user-id": { "path": "$.extension_hasura_id" }
}
}
"B2C_1A_signup_signin"
하여 JWT에 사용자 정의 클레임이 포함되어 있는지 확인합니다.복제 토큰Azure 광고와 함께 사용(비B2C)
Azure 광고가 있으면 사용자와 그룹을 설정하는 임대인이 있을 수 있습니다. (임의로 등록하지 않았습니다.)이런 상황에서 가장 의미 있는 것은
users
)를 사용자 id로 사용하여 사용자 데이터를 하수라의 oid
표에 대량으로 가져옵니다. 캐릭터는 그룹 id에서 만들 수도 있고 단독으로 만들 수도 있습니다.다음은 JWT 기밀의 한 예로
claims_map
가 추가되었습니다.{
"jwk_url": "https://login.windows.net/common/discovery/keys",
"claims_map": {
"x-hasura-allowed-roles": { "path": "$.groups" },
"x-hasura-default-role": { "path": "$.groups[0]" },
"x-hasura-user-id": { "path": "$.oid" }
}
}
이는 토큰의oid
(Azure AD 사용자 id)와 groups
를 각각 하수라 사용자 id와 캐릭터로 매핑한다.그룹 (지금은 역할) 에 따라 접근 제어를 할 수 있는 흥미로운 권한 설정을 할 수 있습니다.새로운/업데이트된 사용자 정보를 Postgres 데이터베이스에 자동으로 업데이트하는 방법과 역할, 그룹 또는 팀 ID 등 관건적인 Hasura 세션 변수를 구축하는 방법은 당신에게 달려 있습니다!
Reference
이 문제에 관하여(Azure Active Directory와 Hasura JWT의 통합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/hasurahq/azure-active-directory-integration-with-hasura-jwt-claims-mapping-b0d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)