SAML 그룹을 사용하여 사용자를 다양한 범주로 인증합니다. 그룹이 변경되면 사용자는 다시 로그인해야 합니다. 저는 이 과정을 IDP에서 자동화하고 싶습니다. 그룹이 변경되면 API를 사용하여 사용자를 로그아웃시키려고 합니다.
curl -X POST “https://mydiscourse.org/admin/users//log_out.json” -H “Content-Type: application/json” -H “Api-Key: XXXX” -H “Api-Username: Admin” -v
로그아웃 권한만 있는 API 토큰을 사용하면 매우 안전하게 이 작업을 수행할 수 있습니다.
하지만 IDP에는 사용자의 숫자 ID가 없습니다. 고유 번호만 있습니다.
이미 콘솔에 진입하여 rails c를 통해 사용자를 로그아웃하는 방법을 발견했습니다.
uaa = UserAssociatedAccount.find_by(provider_name: “saml”, provider_uid: “123456”)
user = uaa.user
user.user_auth_tokens.destroy_all
따라서 제 아이디어는 유사한 사용법을 가진 커스텀 엔드포인트를 만드는 것이었습니다.
curl -X POST https://mydiscourse.org/custom/saml-logout/123456 -H “Api-Key: xxx” -H “Api-Username: Admin” -H “Accept: application/json”
이것은 단순히 수신된 auth_token을 공식 API로 전달하는 것일 수 있으며, 아마도 가장 안전한 방법일 것입니다. ID는 user.id를 통해 얻을 수 있습니다(위 참조).
또는 다음을 실행할 수도 있습니다.
uaa = UserAssociatedAccount.find_by(provider_name: “saml”, provider_uid: “123456”)
user = uaa.user
user.user_auth_tokens.destroy_all
이 매우 작은 코드 조각을 그대로 붙여넣을 수 있는 간단한 플러그인이 있을까요? 저는 루비 프로그래머가 아니지만, 이 코드는 줄 수가 매우 적습니다. 몇 분 안에 실행 가능한 일이라고 생각합니다.
도움 주셔서 감사합니다.