TL : DR : EDIT 1에서 읽습니다.모바일 앱용 OAuth가있는 Grails Rest API
인증을 구현하는 방법, 특히 모바일 앱에서 사용할 나머지 API에 대한 OAuth에 대한 해결책을 찾으려고합니다.
나는 발견이 인기 플러그인 (봄 보안 나머지) :
http://alvarosanchez.github.io/grails-spring-security-rest/docs/guide/single.html#oauth1
그러나 문제는 그것이 콜백 URL을 필요로하므로이, 자바 스크립트 프론트 엔드 애플리케이션을 위해 설계된 것입니다 내 프론트 엔드에 생성 된 토큰을 전달합니다 (다이어그램에서 볼 수있는 것처럼).
모바일 응용 프로그램의 경우 어떻게합니까? 이 플러그인을 구현할 수있는 다른 플러그인이나 디자인이 있습니까? Grails 나 Spring에서 stateless OAuth에 대한 플러그인이나 튜토리얼이별로 없다는 것을 알게되었지만 사용하는 모바일 앱은 많습니다.
여기에 사용하는 경우의 예입니다 :
- 사용자가 모바일 앱을 엽니 다.
- 사용자가 모바일 앱에서 Facebook으로 로그인합니다.
- 사용자가 api/orders에 요청을 보내면 주문 만 반환합니다.
누가이 부분에서 OAuth 부분을 처리해야합니까? 플러그인에 표시된 다이어그램의 흐름은 모바일 앱에서 작동하지 않으므로 모바일 앱이 Facebook에 인증을 받아 토큰 스토어를 가져 와서 웹 앱에 전달해야합니까?
정확한 디자인/흐름이이 경우에 무엇인지, 그리고 플러그인 또는 Grails를 사용하여 구현하는 방법을 알고 싶습니다.
편집 : 올바른 흐름입니까? 그렇다면
, Grails는이를 구현하는 표준 방법은 무엇입니까?
EDIT 2 : 이제 흐름을 이해 했으므로 로그인 부분을 Spring 보안 나머지 플러그인 (이미 다른 모든 항목을 처리하고 있음)과 통합해야합니다. 는 여기에 내가 플러그인과 통합 할 코드입니다하지만 플러그인에서 수정하는 경우 또는 모르는 :
// api/auth/fb
def auth(){
//Extract fb_access_token
String fbAccessToken = request.JSON.?fb_access_token
//Call https://graph.facebook.com/me?access_token=fbAccessToken
def userInfo = facebookService. ... (fbAcessToken) //Method to use in the plugin
//Verify if the userInfo contains an error/doesn't contain a fbId
if(userInfo.getFbId() == null){
respond unauthorized() // 401, Invalid access token
}
//Verify if this token is for our app
else if(userInfo.getAppSecret() != System.env.getParameter("appSecret")){
respond unauthorized() //401, token not for this app
}
//Register or login
else{
User user = User.findByFbId(userInfo.getFbId())
if(user == null){
facebookService.registerUser(userInfo) //Custom method implemented in the service
}
else{
FbToken fbToken = new FbToken(userInfo.getToken(), userInfo.getExpiration())
user.setFbAccessToken(fbToken)
}
//Login the user with spring security and let it handle the rest (token creation => storage => http answer)
}
}
이 작업을 수행하는 데 운이 좋았습니까? – OsaSoft