Discourse OAuth2 Basic

Authentik OAuth2와 함께 이 문제를 해결했습니다. 다만 oauth2 user json url 설정에서 몇 가지 문제가 있었습니다. 해당 설정에 Authentik의 user_info 엔드포인트(/application/o/userinfo/)를 사용했지만, 필드를 어떻게 매핑해야 할지 몰랐습니다. Discourse를 Authentik의 OAuth2와 함께 설정하는 방법을 찾고 계신 분들을 위해 요약하면 다음과 같습니다:

  • User id 경로: preferred_username
  • Username 경로: preferred_username
  • Name 경로: name
  • Email 경로: email
  • Email verified 경로: email_verified
  • Avatar: 비어 있음.

다음과 같은 문제들이 있었습니다:

  1. 처음에 json url https://DOMAIN/application/o/userinfo/에서 끝나는 슬래시를 누락했습니다. 이로 인해 사용자 정보 요청(소스 영구 링크)가 301 HTTP 코드를 반환하여 로그인이 실패했습니다. 규격상 끝나는 슬래시가 있어야 하는지는 알 수 없지만, 301을 올바르게 처리하는 것이 좋을 것 같습니다.
  2. 이 문제를 디버깅하는 것이 까다로웠습니다. oauth2 debug auth 설정이 큰 도움이 되었지만… Logster가 의미 있는 응답 데이터를 덤프하기 전에 디버그 로그를 잘라 버립니다. 컨테이너에서 로그 라인을 수동으로 수정해야 했습니다.
    log("user_json_response: #{user_json_response.status} #{user_json_response.headers} #{user_json_response.body}")
    
    아마도 이 로그 라인을 업데이트할 수 있을 것입니다. 다른 사람들이 json 속성 경로를 파악하는 데 도움이 될 것 같습니다.
4개의 좋아요