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