익명의 iPhone의 게으른 로그인을 지원하기 위해 retful_authentication/authlogic을 확장하는 가장 좋은 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/351627

문제

Ruby on Rails 백엔드와 대화하는 iPhone 응용 프로그램을 구축하고 있습니다. Ruby on Rails 응용 프로그램도 웹 사용자에게 서비스를 제공합니다. Restful_authentication 플러그인은 빠르고 사용자 정의 가능한 사용자 인증을 제공하는 훌륭한 방법입니다. 그러나 iPhone 응용 프로그램 사용자가 전화의 고유 식별자 ([UideVice Device] CiraleIderifier])에 의해 새 열에 저장된 계정을 자동으로 생성하려고합니다. 나중에 사용자가 사용자 이름/비밀번호를 만들 준비가되면 계정이 사용자 이름과 비밀번호를 포함하도록 업데이트되어 iPhone 고유 식별자를 그대로 유지합니다. 사용자는 사용자 이름/비밀번호를 설정할 때까지 웹 사이트에 액세스 할 수 없어야합니다. 그러나 응용 프로그램은 식별자를 사용하여 자체적으로 인증 할 수 있으므로 iPhone 응용 프로그램을 사용할 수 있습니다.

이 작업을 수행하기 위해 RESTFUL_Authentication을 수정하는 가장 좋은 방법은 무엇입니까? 플러그인을 만드시겠습니까? 아니면 생성 된 코드를 수정 하시겠습니까?

AuthLogic과 같은 대체 프레임 워크는 어떻습니까? iPhone이 UUID에 생성 된 인증 토큰을 얻을 수 있도록 허용하는 가장 좋은 방법은 무엇입니까? 그런 다음 사용자가 나중에 사용자 이름/비밀번호를 만들 수 있도록합니까?

도움이 되었습니까?

해결책

나는 당신이 전화 식별자 만 사용하여 비밀이 아니기 때문에 인증을 받아해서는 안된다고 생각합니다. 누군가가 웹 앱을 해킹하려면 코드를 사용할 필요가 없다는 것을 잊지 마십시오. 장치 ID를 추측하고 웹 클라이언트를 사용하여 사용자 데이터를 엉망으로 만들 수 있습니다.

사용자 이름과 유사한 장치 ID를 처리해야합니다. 인증이 아닌 식별을위한 것입니다. 사용자가 비밀번호를 선택하거나 무작위 코드를 자동으로 생성하도록하는 것이 좋습니다. 장치와 함께 이동 한 다음 장치 ID +이 비밀번호/코드를 보내서 장치를 먼저 등록한 다음 장치를 인증합니다.

또한 일부 사용자는 하나 이상의 장치를 가질 것이라고 확신 할 수 있습니다. 결국에는 하나를 교체하거나 4 개의 아이폰으로 돌아 다니는 Stephen Fry와 같은 누군가를 얻게됩니다. 이를 다루기 위해 사용자를 인증하기 위해 Restful_authentication을 두 번, 장치를 인증하기 위해 두 번째로 인스턴스화하는 방법을 찾는 것이 좋습니다. 이 플러그인을 사용하지 않았지만이를 수행하기 위해 다른 테이블 매개 변수를 사용하면됩니다. 그런 다음 응용 프로그램 로직에서 사용자는 둘 이상의 장치를 계정과 연결할 수 있습니다.

이를 수행하려면 장치에서이를 수행하거나 장치에 임의의 코드를 표시 한 다음 웹 앱에 입력하여 장치를 소유 한 것으로 입증하도록합니다 (이것은 Apple이 사용하는 것보다 더 고통스럽게 들립니다. iTunes, Apple TV 및 원격 앱에서는 그들이 어떻게하는지 살펴보십시오. 따라서 사용자에게는 놀라운 일이 아닙니다).

(또한 임의의 암호를 생성 할 때 암호화 임의 번호 생성기를 기준으로 사용하십시오. 아마도 iPhone API가있을 수 있습니다. 그렇지 않으면 암호를 예측할 수 있습니다).

다른 팁

다른 인증 체계를 사용하려고 했습니까? authlogic? 나는 restful_authentication이 다소 방해를 발견했다 (나는 보르트).

레일에서 임의 암호를 생성합니다 링크 텍스트내 프로젝트 중 하나에 retful_authentication 플러그인을 사용하고 있습니다. 사용자 생성 워크 플로의 일환으로 시스템은 새 사용자의 임의 비밀번호를 생성해야합니다.

UDID + A Sitewide Defined Salt를 사용하여 생성 된 UDID 및 임의의 암호 사용에 대해 어떻게 생각하십니까?

같은 것 :

salt = 'afG553Dvbf3'

udid = '1234567890'
pass = Digest::MD5.hexdigest(udid + salt)

다음에 연결할 때 아이폰으로 해당 비밀번호를 보내십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top