programing

심플하고 안전한 API 인증 시스템

yellowcard 2023. 3. 16. 21:17
반응형

심플하고 안전한 API 인증 시스템

다른 웹 사이트/앱을 위한 간단한 REST JSON API를 가지고 있습니다(PHP 게이트웨이를 통해).기본적으로 서비스는 다음과 같이 동작합니다.call example.com/fruit/orange, server는 오렌지에 대한 JSON 정보를 반환합니다.문제는 다음과 같습니다.이 서비스에 접속할 수 있도록 허가된 웹 사이트만 원합니다.간단한 API 키 시스템으로, 어떤 웹사이트도 공인 웹사이트의 (잠재적으로) 클라이언트 측 코드에서 키를 복사하여 빠르게 키를 얻을 수 있습니다.OAuth를 살펴봤지만, 제가 하고 있는 일치고는 좀 복잡한 것 같습니다.솔루션?

OAuth를 사용해야 합니다.

실제로 OAuth 사양은 3다리 버전과 2다리 버전 두 가지가 있습니다.가장 주목받는 것은 3다리 버전이지만, 사용하고 싶은 것은 아닙니다.

좋은 소식은 2-레그 버전이 원하는 대로 작동한다는 것입니다. 이를 통해 애플리케이션은 공유 개인 키(Amazon의 Web Service 모델과 매우 유사하며 HMAC-SHA1 서명 방식 사용) 또는 공개/개인 키 시스템(서명 방식: RSA-SHA1)을 통해 다른 사용자에게 액세스를 허용할 수 있습니다.나쁜 소식은 아직 3다리 버전만큼 잘 지원되지 않기 때문에 지금 당장 해야 할 작업보다 조금 더 많은 작업을 해야 할 수도 있다는 것입니다.

기본적으로 2-레그 OAuth는 현재 날짜, "난스"라는 난수 및 요청 매개 변수를 포함하는 여러 필드에 "서명"(해시 오버 계산)하는 방법을 지정합니다.따라서 웹 서비스에 대한 요청을 가장하기가 매우 어렵습니다.

OAuth는 천천히, 그러나 확실히 이러한 종류의 표준이 되고 있습니다.이것을 받아들인다면 장기적으로는 사람들이 이용할 수 있는 다양한 라이브러리를 활용할 수 있기 때문에 가장 좋은 방법이 될 것입니다.

이것은 당신이 처음에 알고 싶어했던 것보다 더 정교하지만, 좋은 소식은 많은 사람들이 그것에 많은 시간을 투자했기 때문에 당신은 아무것도 잊지 않았다는 것을 알고 있다는 것입니다.그 좋은 예가 바로 최근 트위터가 OAuth 보안에 빈틈을 발견했고, 커뮤니티는 현재 이 문제를 해결하기 위해 노력하고 있다.독자적으로 시스템을 발명했다면 스스로 이 모든 것을 알아내야 합니다.

행운을 빕니다.

크리스

OAuth는 여기서 해결책아닙니다.
OAuth는 최종사용자가 있고 최종사용자의 비밀번호를 처리하지 않도록 서드파티 어플리케이션을 필요로 하는 경우입니다.OAuth를 사용하는 경우:http://blog.apigee.com/detail/when_to_use_oauth/

간단한 api-key를 선택합니다.
또한 보다 안전한 솔루션이 필요한 경우 추가 조치를 취하십시오.

자세한 것은, http://blog.apigee.com/detail/do_you_need_api_keys_api_identity_vs._authorization/ 를 참조해 주세요.

다른 사용자의 클라이언트 측 코드가 손상된 경우 새 키를 얻어야 합니다.그들의 코드가 노출되면 당신이 할 수 있는 일은 많지 않아요.

단, 지정된 키에 대해 허가된 서버의 IP 주소를 시스템에 등록하도록 요구함으로써 보다 엄격하게 할 수 있습니다.이로 인해 추가 단계가 추가되어 과잉 살상이 될 수 있습니다.

'단순 API 키'를 사용하는 것은 잘 모르겠습니다만, 개인 키(클라이언트 및 서버에만 알려져 있음)를 가지는 인증을 사용하고, 그 데이터에 대해서 체크섬 알고리즘을 실행해, 클라이언트가 실제로 생각하는 것과 같은지, 전송중에 데이터가 변경되지 않은지를 확인해 주세요.Amazon AWS는 그 방법의 좋은 예입니다.

고객 측에서 코드가 손상되지 않았다고 보증하는 것은 조금 엄격할 수 있다고 생각합니다.고객의 데이터 보안에 대한 책임을 고객에게 지우는 것이 타당하다고 생각합니다.물론 공격자가 해당 클라이언트의 계정만 혼란시킬 수 있다고 가정합니다.

특정 계정에서 어떤 IP 요구가 발신되었는지를 로그에 기록하고 새 IP가 나타나면 해당 계정에 플래그를 지정하고 클라이언트에 전자 메일을 보낸 후 해당 IP를 인가하도록 요청할 수 있습니다.그런 게 먹힐지 모르겠네요

기본적으로 IP에 의한 접근을 제한하거나 API 키를 갖는 두 가지 옵션이 있습니다. 두 옵션 모두 긍정적인 면과 부정적인 면이 있습니다.

에 의한
이것은, 서비스에의 액세스를 제한하는 편리한 방법이 될 수 있습니다.어떤 서드파티 서비스가 특별한 인증 기능을 구현하도록 강제하지 않고 서비스에 액세스할 수 있는지 정확하게 정의할 수 있습니다. 이 가 예를 완전히 JavaScript로 의 IP는 IP가 입니다. 수신 요구의 IP는 서드파티 서비스의 서버 IP가 아니라 사용자의 브라우저에 의해 요구되기 때문에 사용자의 IP가 된다는 것입니다.따라서 IP 제한을 사용하면 클라이언트 구동 응용 프로그램을 쓸 수 없게 되고 모든 요청이 적절한 액세스 권한을 가진 서버를 통과하도록 강제됩니다.IP를 사용합니다.

API 키
API 키의 장점은 알려진 IP 목록을 유지할 필요가 없고 API 키 목록을 유지할 필요가 있지만 유지보수를 자동화하기가 더 쉽다는 것입니다.기본적으로는 2개의 키(사용자 ID와 비밀 패스워드 등)가 있습니다.서비스에 대한 각 메서드 요구는 요청 파라미터, 사용자 ID 및 이들 값의 해시(secrect 패스워드가 해시 솔트로 사용됨)로 구성된 인증 해시를 제공해야 합니다.이렇게 하면 액세스를 인증 및 제한할 수 있습니다.여기서도 문제는 서드파티 서비스가 클라이언트 구동(예를 들어 JavaScript 또는 ActionScript)으로 작성되면 누구나 코드에서 사용자 ID와 비밀 솔트 값을 해석할 수 있다는 것입니다.

기본적으로 특별히 정의한 소수의 서비스만 서비스에 액세스할 수 있도록 하려면 IP 제한을 사용하여 모든 요청을 서버를 통해 라우팅하도록 강제하는 방법밖에 없습니다.API 키를 사용하는 경우 이를 적용할 방법이 없습니다.

IP 보안은 모두 접속하기 전에 사용자에게 큰 버그를 발생시키는 것 같습니다.Symbian 60s는 여러 사용자(Opera Handler UI 6.5, Opera Mini v8 및 10 적용)와 코드화된 UI, +완전한 네트워크 셋업을 통해 추적되지 않고 신뢰성이 높고 안전한 신호를 남길 수 있습니다.링크 방식을 고속화하는 검출 가능한 방법이 드디어 입수되었는데 왜 다른 기능을 제한합니까?좀 더 식별된 계정을 유지하고, 해당 '진정한 계정'을 적절하게 모니터링하여 청구서 지불을 추적하고, 사용자가 만료되지 않은 잔액을 보유하고 있는지 여부를 파악함으로써 인터넷 신호를 인기 있는/서명 모바일 산업과 보다 빠르게 연결할 수 있습니다.사이트에 접속하기 전에 하드 보안 기능을 만들어 매월 계정을 방문하면 접속 문제가 모두 해소되는 이유는 무엇입니까?모든 모바일 사용자는 미납 요금이 있다면 '연결'할 수 있는 기능이 없어야 한다.지불 유무에 관계없이, 「감시 기능」을 갖춘 「ALL in One」-등록/어플리케이션 어카운트(아마도 E-메일 어카운트)를 제공하는 것은 어떻습니까(패스워드의 문제는 다른 부문에 맡겨 주세요).'그렇지 않은' 경우 계정 및 기타 링크 기능을 완전히 해제합니다.요금 미납으로 인해 잠가두거나 꺼두면 책임 있는 사용자가 되기 위해 재가입 및 규율 강화가 시작되고 유지되지 않으면 계정이 만료될 수도 있습니다.식별된 '진정한 계정'을 매월 감시 또는 네트워크 프로바이더와의 협업을 통해 접근함으로써 사용자에게 항상 데이터 서비스를 표시하기 위한 '이름', '패스워드', '장소', '권한'을 요구하는 대신 프라이버시가 향상됩니다.IP는 이미 첫 번째 ID 또는 '사용자의 위치 찾기'로 표시되어 있기 때문에 브라우저 사전 검색에 배치하는 것은 불필요할 것 같습니다. '데이터 가져오기' 또는 '데이터 처리'를 사용하는 것은 어떨까요?

언급URL : https://stackoverflow.com/questions/846752/simple-secure-api-authentication-system

반응형