Jhipster + REST客户端+身份验证

sup*_*ndr 6 security rest spring-boot jhipster

我需要了解如何验证REST客户端(可能是Paw,可能是一个Android应用程序,一个使用AFNetworking与jHipster的iOs应用程序,我想,更一般来说,弹簧启动,我不是专家).

虽然我在登录浏览器时能够获取令牌,并在随后的请求中使用此令牌,但我不知道如何使用RESTful最佳实践进行身份验证.

例如,在Paw.app中,我可以传递基本身份验证或Oauth2,但我不明白如何让会话令牌像我在Web浏览器上那样简单地进行身份验证.

同样,在AFNetworking中,我能够通过基本身份验证,例如

NSString*auth=[NSString stringWithFormat:@"%@:%@", @"admin", @"admin"];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [auth base64EncodedString]];
[manager.requestSerializer setValue:authValue forHTTPHeaderField:@"Authorization"];
Run Code Online (Sandbox Code Playgroud)

但我很难理解如何使用jHipster/spring boot中捆绑的会话安全性进行身份验证.

sup*_*ndr 2

这里总结了我如何实施该解决方案。它\xe2\x80\x99是真正的swift代码,但请将其视为伪代码,因为它可能不正确。

\n\n
    \n
  1. 调用您需要调用的任何方法,在该方法中传递成功时的回调(块或等效项)和失败时的回调(块或等效项)

    \n\n
    func action(\n    URLString:String,\n    method:Method,\n    encoding:Encoding = .JSON,\n    parameters:[String : AnyObject]?,\n    success:(statusCode:Int, responseObject:AnyObject)->Void,\n    failure:(statusCode:Int, error:NSError)->Void\n)\n
    Run Code Online (Sandbox Code Playgroud)
  2. \n
  3. 在方法 es 内。/events您处理特定的失败情况,即状态代码为 401 时。

    \n\n
     if(r!.statusCode==ResponseCodes.HTTP_UNAUTHORIZED.rawValue){\n\n     loginAndAction(URLString, method: method, encoding: encoding, parameters: parameters, success: success, failure: failure)\n\n }else{\n\n     failure(statusCode: response.response!.statusCode, error:response.result.error!)\n\n }\n
    Run Code Online (Sandbox Code Playgroud)
  4. \n
  5. 在这种特殊情况下,您不是返回结果并调用失败回调,而是调用一个 login() 方法,该方法在必要的参数之后接受原始success()回调

    \n\n
    func loginAndAction(\n    URLString:String,\n    method:Method,\n    encoding: Encoding,\n    parameters:[String:AnyObject]?,\n    success:(statusCode:Int, responseObject:AnyObject)->Void,\n    failure:(statusCode:Int, error:NSError)->Void\n    )->Void\n
    Run Code Online (Sandbox Code Playgroud)
  6. \n
  7. 如果认证成功

    \n\n
    var d:[String:AnyObject] = response.result.value as! [String:AnyObject]\nself.authToken = d["access_token"] as! String\n\naction(URLString, method: method,encoding:encoding, parameters: parameters, success: success, failure: failure)\n
    Run Code Online (Sandbox Code Playgroud)
  8. \n
\n\n

此时,方法操作可以使用正确的工作令牌。

\n\n

这应该每天只发生一次(基于令牌过期),并且它是适用于 oauth2 的机制refresh_token call.

\n