2017-12-02 8 views
0

가입/로그인하여 사용할 앱을 만들고 있습니다. 지금 나는 그것에 대한 편안한 웹 서비스를 구현하고 있으며, 내가 올바른 방향으로 가고 있는지 확신 할 수 없다. 내 워크 플로 :앱에 대한 자체 로그인 및 로그인 시스템 구현

가입하려면 사용자 이름, 전자 메일 및 암호와 같은 자격 증명을 입력합니다. 응용 프로그램은 암호를 해시하고 json으로 자격 증명이 포함 된 게시물 요청을 내 웹 서비스에 보내고 웹 서비스는 새 사용자를 데이터베이스에 저장합니다.

시스템에 로그인하기 위해 응용 프로그램은 암호의 사용자 이름과 해시 매개 변수를 포함한 get 요청을 웹 서비스에 보내고 해시 값을 비교하여 성공 또는 실패에 대한 적절한 응답 코드를 반환합니다.

app과 webservice 간의 통신은 SSL로 보호됩니다.

가입/로그인 시스템의 올바른 워크 플로인가요? 그렇지 않은 경우 왜 안전하지 않으며 다른 워크 플로를 권장 할 수 있습니까? 건배.

답변

0

가장 중요한 부분은 웹 서비스가 https를 통해서만 접근 가능해야한다는 것입니다. 모바일 앱에 대해 이야기하고 있다고 가정합니다. 앱이 암호를 해시해서는 안되며 웹 서비스가 암호를 해시 한 다음 사용자를 저장해야합니다. 모바일 앱을 리버스 엔지니어링하여 비밀번호를 해시하는 방법을 알고있을 수 있습니다. 그래서 안심하고 사용자를 만들려면 본문에 사용자 이름, 전자 메일 및 암호가 포함 된 POST 요청을 보내는 것이 좋습니다.

예를 를 들어

POST/사용자

{ 
     "username": "john-doe", 
     "email": "[email protected]", 
     "password": "some password" 
    } 

인증/권한 부여를 들어 당신의 OAuth 2를 고려해 볼 수 있지만 그 구현하는 엄청난 시간이 걸립니다. 또 다른 옵션은 access-tokens라고하는 다른 REST 리소스를 갖는 것입니다. 그래서 인증 할 때마다 액세스 토큰을 생성하라는 POST/access-tokens 요청을합니다.

POST/액세스 토큰

{ 
     "username": "john-doe", 
     "password": "some password" 
    } 

{ 
     "access_token": "9d91c97fc0f98a6311f101246e252ab3230c261c2af", 
     "expries_in": 3600 
    } 

그런 다음 모바일 앱이 만료되기 전에 항상 토큰 곧 새로운 접근을 만들 것이라는 점을 돌볼 필요가 응답 . 또한 OAuth 2는 액세스 토큰과 함께 전달되는 이러한 용도로 새로 고침 토큰을 제공합니다. 그런 다음 새로 고침 토큰을 웹 서비스에 보내어 새 액세스 토큰을 검색 할 수 있습니다. 일단 인증을 받으면 인증이 필요한 웹 서비스에 대한 모든 요청에서 인증 헤더에 액세스 토큰을 포함시켜야합니다.