你好,我遇到了oauth2问题。我不用春天。我有一些使用netbeans包含的泽西罐子组成的JAX-RS网络服务。我必须使用oauth 2来保护这些服务,以便移动客户端可以在不存储用户凭据的情况下使用它。我甚至不知道从哪里开始,因为我看到的所有示例都使用Spring ...不使用spring的那些使用Oltu库,文档不能说服我。有些oltu样本甚至不起作用。任何人都可以向我展示一个教程,帮助我使用泽西和一些库从头开始构建授权服务器吗?任何一个甚至oltu ......
答案 0 :(得分:0)
我的回答将基于Oltu。我将使用 CLIENT_CREDENTIALS 认证。
获取令牌应如下所示:
// We initialize a client
OAuthClient lOAuthClient = new OAuthClient(new URLConnectionClient());
OAuthJSONAccessTokenResponse lOAuthResponse;
// We are creating a request that's already formatted following the Oauth specs
OAuthClientRequest lRequest = OAuthClientRequest
.tokenLocation(TOKEN_SERVER_URI)
.setGrantType(GrantType.CLIENT_CREDENTIALS)
.setClientId(CLIENT_ID)
.setClientSecret(CLIENT_SECRET)
.setScope("admin")
.buildBodyMessage();
//This will submit the request
String code = lOAuthClient.accessToken(lRequest, OAuthJSONAccessTokenResponse.class).getAccessToken();
System.out.println("Token obtained:" + token);
现在我们可以使用我们的令牌获取我们的资源:
HttpURLConnection resourceConn = (HttpURLConnection) (new URL(RESSOURCE_SERVER_URI).openConnection());
resourceConn.addRequestProperty("Authorization", "Bearer " + token);
InputStream resource = resourceConn.getInputStream();
// Do whatever you want to do with the contents of resource at this point.
BufferedReader r = new BufferedReader(new InputStreamReader(resource, "UTF-8"));
String line = null;
while ((line = r.readLine()) != null)
System.out.println(line);