2014-09-12 4 views
2

휴대 전화 용 앱을 제작 중입니다. 승인 절차는 다음과 같은 방식으로 이루어져야합니다. 사용자가 로그인하지 않으면 WatsApp, Viber 등의 전화 번호를 입력하라는 메시지가 표시되고 전화 번호를 입력하면 8 자리 확인 코드가있는 SMS가 사용자에게 전송됩니다. 사용자가 코드를 입력하면 OAuth2 액세스 토큰과 새로 고침 토큰이 생성되어 8 자리 확인 코드가 데이터베이스에서 삭제됩니다. 사용자가 로그 아웃하면 동일한 프로세스를 다시 수행해야합니다.맞춤 OAuth2 허용 유형 만들기

저는 자원 소유자이므로 비밀번호 인증 방법을 사용하고 싶습니다. 그러나 인증 프로세스 중에 암호가 없기 때문에 어떤 매개 변수를 사용하여 토큰을 만들지 모릅니다. 새로운 oauth2 부여 유형을 만드는 것이 좋습니다. "confirm_code"라고하며 매개 변수는 client_id, client_secret, username 및 confirmation_code가 될 수 있습니까?

답변

1

http://tools.ietf.org/html/rfc6749의 사양에 따라 OAuth 2.0 "리소스 소유자 비밀번호 자격증 허가"를 사용하십시오. 귀하의 사용자 ID는 전화 번호이고, 암호는 귀하가 보낸 8 자리 확인 코드입니다.

SMS를 보내야 할 전화 번호를 등록하라는 전화는 분명히 인증되어서는 안됩니다.

또는 "인증 코드 부여 (Authorization Code Grant)"를 사용하십시오. 로그온 페이지에서 필요한 단계를 수행하십시오. 먼저 전화 번호를 물어보고 SMS를 보내십시오. 그런 다음 확인 코드를 요청하십시오. 이것은 몇 가지 보안 이점을 가질 수 있습니다. 위의 방법과의 주요 차이점은 권한 부여 서버가 UI의 일부 (HTML 일부)를 제공하는 반면 비밀번호 자격 증명을 사용하면 모든 UI가 애플리케이션 (OAuth 클라이언트)이 제공한다는 점입니다.

인증 서버가 제공하는 페이지에서 여러 인증 메소드를 사용할 수 있습니다. 예를 들어, 일반 암호를 입력 할 수있는 기능을 제공하고 암호가 입력되지 않은 경우에만 SMS를 보낼 수 있습니다. 이것은 일반적인 웹 응용 프로그램이므로 기본적으로 웹 응용 프로그램에서 가능한 모든 작업을 수행 할 수 있습니다. 권한 부여 서 v가 클라이언트 응용 프로그램으로 재전송 할 때만 권한 부여가 완료됩니다.

+0

내가 그 문제를 언급 했음에 틀림 없다. 작은 문제가 하나 있습니다. 또한 암호를 허용하는 웹 인터페이스가 있습니다. 대부분의 작업은 전화를 통해 이루어지기 때문에 모든 사용자 이름은 전화 번호이지만 일부 사용자는 암호가 부족할 수 있으며 사용자가 웹 인터페이스를 사용하면 다른 SMS가 전화 번호로 "암호 재설정"을 전송하고 일단 사용자가 코드를 입력하면, 그는 새로운 암호를 생성하고 웹 인터페이스를 통해 로그인 할 수 있습니다. – Gasim

+0

@Gasim 어쩌면 뭔가 놓쳤을 지 모르지만 그게 어떻게 문제인지는 모르겠다. 설명 할 수 있니? –

+0

전화를 사용할 때 웹 인터페이스에서 사용할 수있는 별도의 암호를 가질 수 있기 때문에 확인 코드와 암호 인증이 중복됩니다. 실제로 사용자 지정 인증 방법을 만드는 것이 좋습니까? 코드를 읽는 것과 암호를 읽는 것 외에는 다른 방식으로 모든 것을 동일한 방식으로 사용하므로 보안이 현명합니다. 제 질문은 일반적으로 표준에 관한 것입니다 ... 표준이 사용자 정의 부여 유형을 허용합니까? – Gasim