문제

간단한 휴식 HTTP API를 노출시키는 작은 응용 프로그램을 작성하고 있습니다. 승인 부족으로 인해 실패를 알리는 방법을 결정하려고 노력하고 있습니다.

이 앱에는 인증을위한 API가 없지만 대신 다른 서비스를 통해 클라이언트가 얻은 세션 토큰이 포함 된 쿠키의 존재에 따라 다릅니다. 앱은 세션을 확인하고 검증 프로세스를 통해 얻은 신원을 사용하여 앱 특정 승인을 수행합니다. 클라이언트 가이 앱에 직접 인증 할 수있는 방법은 없습니다.

내 문제는 무단 요청을 거부하기위한 명백한 HTTP 상태 코드 인 "401 무단"이 "www-authenticate"헤더의 관점에서 지정된다는 것입니다. 보다 RFC2616 SEC 10.4.2.

응답에는 요청 된 리소스에 적용 가능한 도전이 포함 된 WWW Authenticate 헤더 필드 (섹션 14.47)가 포함되어야합니다.

나는 이것이 드문 문제라고 믿을 수 없다. 보다 일반적인 용도를 포함시키기 위해 단순히 401을 과부하하는 것이 일반적입니까? 브라우저가 인증/E 대화 상자를 팝업하는 것은 어떻습니까 (우연히 테스트에서 보지 못했기 때문에 게시물에서는 발생하지 않을 수 있습니다)?

결론 :이 맥락에서 401을 사용해도 괜찮습니까, 아니면 더 나은 솔루션이 있습니까?

도움이 되었습니까?

해결책

일반적으로 클라이언트가 문제를 인증하고 해결할 수있는 경우 401을 보내지 만 API에서 인증하는 방법을 제공하지 않으므로 대신 403 오류 (금지)를 반환하는 것이 좋습니다. 이것은 헤더가 필요하지 않으며 클라이언트에게 서비스에 액세스 할 수 없음을 나타냅니다.

다른 팁

다음과 같이 반환하십시오.

HTTP/1.1 401 Unauthorized
Location: https://example.com/auth-app/login
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top