我有三种方法的休息服务,所以不那么复杂。我使用了play框架并实现了一些基本的身份验证(Global):
@Override
public Action onRequest(Request request, Method actionMethod) {
if ("/dataDumps".equals(request.path()) || "/limitations".equals(request.path()) || "/entities".equals(request.path())) {
if(null != request.getHeader("api-key") && request.getHeader("api-key").equals("xxxxxxx")) {
return super.onRequest(request, actionMethod);
} else {
return new Action.Simple() {
@Override
public Promise<SimpleResult> call(play.mvc.Http.Context ctx) throws Throwable {
return F.Promise.pure((SimpleResult) forbidden());
}
};
}
}
return super.onRequest(request, actionMethod);
}
哪个效果很好。现在我要求我需要添加oauth2身份验证。之前没有这样做,所以我肯定会读到一些链接:
http://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified
http://oauth.net/code/
http://coolthingoftheday.blogspot.com/2012/03/o-what-is-oauth-big-picture-free-ebook.html
我试图在线查找oauth服务提供商示例实现的示例。我发现了这个:
http://oauth.googlecode.com/svn/code/java/example
但它甚至不能用maven构建。
所以我试着看看它是如何在这个例子中完成的,并将逻辑添加到我的onRequest
方法,但在示例代码请求对象是HttpServletRequest
但我的请求对象是play.mvc.Http.Request
我找到了这个问题https://gist.github.com/feliperazeek/1033587可以解决上面这个问题,但我觉得在开始之前我已经过度复杂了。
1。花了相当多的时间阅读并尝试了一些东西。也许实施Oauth服务提供商的人可以给我一些提示,有用的见解,链接或代码?
我的服务将被其他客户使用,可能是其他服务或设备,所以我认为我需要创建授权服务,以便客户端可以进行身份验证,但同时他们将使用我的服务。
2。我弄错了吗?有没有比上面描述的更好的方法(很可能)?