Hasura
통합하기 전에, 우리는 로컬에 Casdoor를 배포해야 합니다.
그런 다음 다음 단계를 따라 우리의 앱에서 Casdoor 기반 로그인 페이지를 빠르게 구현할 수 있습니다.
Casdoor 애플리케이션 구성
- 기존의 Casdoor 애플리케이션을 생성하거나 사용합니다.
- 리디렉트 URL 추가:
http://CASDOOR_HOSTNAME/login
- 클라이언트 ID를 복사하세요; 이것이 다음 단계에서 필요합니다.
Casdoor에 사용자 추가
이제 애플리케이션을 가지고 있지만 사용자는 없습니다. 즉, 사용자를 생성하고 역할을 할당해야 합니다.
"사용자" 페이지로 이동하고 오른쪽 상단의 "사용자 추가"를 클릭하세요. 새로운 사용자를 추가할 수 있는 새 페이지가 열립니다.
사용자 이름을 추가하고 Hasura 조직을 추가한 후 사용자를 저장하세요(다른 세부 사항은 선택 사항입니다).
이제 사용자의 비밀번호를 설정해야 하는데, "비밀번호 관리"를 클릭하여 설정할 수 있습니다.
사용자의 비밀번호를 선택하고 확인합니다.
Hasura 앱 빌드
Docker 또는 Hasura Cloud를 통해 Hasura를 시작하세요.
이제 다음 열이 있는 users
테이블을 생성합니다:
id
타입의 텍스트 (기본 키)username
타입의 텍스트
참조를 위해 아래 이미지를 참조하세요.
다음 단계는 앱에 대한 user
역할을 생성하는 것입니다. 사용자는 자신의 레코드만 볼 수 있어야 하며 다른 사람의 레코드는 볼 수 없어야 합니다.
아래 이미지에 표시된대로 user
역할을 구성합니다. For more information, read about configuring permission rules in Hasura.
이렇게 하면 사용자는 다른 사람의 레코드를 읽을 수 없습니다. 그들은 자신의 것에만 접근할 수 있습니다.
테스트 목적으로 더미 사용자를 추가합니다. JWT 토큰을 사용할 때 다른 사용자의 세부 정보가 아닌 자신의 사용자 세부 정보만 볼 수 있도록 하기 위함입니다.
이제 Hasura에서 JWT_SECRET
을 설정해야 합니다.
Hasura를 Casdoor와 구성
이 단계에서는 HASURA_GRAPHQL_JWT_SECRET을 Hasura에 추가해야 합니다.
그렇게 하려면 Hasura docker-compose.yaml로 이동한 다음 아래와 같이 새로운 HASURA_GRAPHQL_JWT_SECRET
을 추가합니다.
HASURA_GRAPHQL_JWT_SECRET
은 다음 형식이어야 합니다. <Casdoor endpoint>
을 자신의 Casdoor의 URL(예: https://door.casdoor.com
)로 변경하세요.
HASURA_GRAPHQL_JWT_SECRET: '{"claims_map": {
"x-hasura-allowed-roles": {"path": "$.roles"},
"x-hasura-default-role": {"path": "$.roles[0]"},
"x-hasura-user-id": {"path": "$.id"}
},"jwk_url":"<Casdoor endpoint>/.well-known/jwks"}'
변경 사항을 저장하고 도커를 다시 로드하세요.
JWT 토큰 검색
클라이언트 구현이 없으므로 아래 URL로 요청을 보내서 액세스 토큰을 얻을 수 있습니다:
http://localhost:8000/login/oauth/authorize?client_id=<client ID>&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Flogin&scope=read&state=app-built-in<public certificate>>
client ID
를 이전에 복사한 ID로 변경하고 Casdoor의 공개 인증서를 입력하세요. 이는 Casdoor의 Certs 페이지에서 찾을 수 있습니다.
이전에 Hasura에 생성한 사용자 이름과 비밀번호를 입력하세요.
"로그인"을 클릭하세요
Casdoor/Token 페이지로 돌아가세요.
이전에 입력한 사용자 이름을 찾은 다음 "편집"을 클릭하세요
액세스 토큰 복사
이제 액세스 토큰을 사용하여 인증된 요청을 만들 수 있습니다. Hasura는 데이터베이스의 모든 사용자를 반환하는 대신 적절한 사용자를 반환했습니다.