내 REST 웹 서비스 API에 대한 보안을 고려 중이며 다른 서비스를 살펴보고 서비스를 수행하는 방법을 결정하기로 결정했습니다. 예를 들어 트위터의 OAuth를 연구하기로 결정했습니다. 초보자 가이드를 읽은 후에 나는 조금 혼란스러워하고 충격을 받았습니다.OAuth가 안전하지 않거나 이해하지 못 했습니까?
사용자를 인증하고 사용자가 어떤 종류의 액세스 권한을 요구하는지 (예 : 특정 리소스에 대한 읽기 전용 액세스 권한)를 표시하는 것은 서비스 제공 업체의 책임입니다. 그러나 서비스 제공 업체가 사용자에게 어떤 유형의 액세스 소비자가 요구하고 있는지 알려주지 않고 (심지어 현재는 소비자의 신원을 보여주고 있음) 사용자에게 알리지 않습니다. 문제의 두 번째 부분은 고객이 IFrame에서 자신의 맞춤형 공급자 서비스 인증 양식을 보여줄 수 있으며 액세스 세부 정보를 숨기거나 비밀번호를 무단으로 사용하거나 리소스에 무제한 액세스를 요청할 수 있다는 것입니다. 사용자를 속이는 방법이 많이 있습니다.
예를 들어 LinkedIn을 예로 들어 봅시다. 그들은 자신의 형태로 Gmail 사용자 이름과 암호를 요청하며, 어떻게 사용할지 모릅니다. 그들은 단지 그것을 훔쳐서 DB에 저장할 수 있으며 Gmail에 OAuth를 사용할 수 있습니다. (그들은 요청한 액세스 유형에 따라 gmail의 페이지를 표시하지 않습니다.) 그들은이 정보로 원하는대로 할 수 있습니다.
내가 말하고자하는 것은 OAuth 통신 프로토콜이 안전하지 않다는 것이 아니라 부적절하게 사용자를 속여서 자격 증명을 얻는 방법이 많이 있다는 것입니다.
BTW OAuth 프로토콜 자체에 보안 흐름이있었습니다. http://oauth.net/advisories/2009-1/) 거기에 더 많은 정보가 있지만, 아무도 그 정보를 찾을 수 없습니다.
서비스가 양식의 사용자 이름과 비밀번호를 요청하는 경우 ** ** ** OAuth가 아닙니다. 사실 OAuth가 해결하고자하는 패턴입니다. –
@BobAman : OAuth가 인증을 처리하지 않는다는 점에서 OAuth가 아니지만 서비스 제공 업체 사이트에서 ob 사용자를 인증하기 위해 from의 username | password를 사용할 수 있으며 OAuth 인증 토큰을 얻을 수 있습니다. 따라서 커버 아래에 있어야하는 것처럼 OAuth 봇이 될 수 없습니다. –