Merge pull request #138 from Doha2012/master
modify spring security oauth
This commit is contained in:
commit
33f0d77c71
|
@ -2,7 +2,6 @@ package org.baeldung.config;
|
|||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
@ -20,7 +19,6 @@ import org.springframework.security.oauth2.client.resource.OAuth2AccessDeniedExc
|
|||
import org.springframework.security.oauth2.client.resource.OAuth2ProtectedResourceDetails;
|
||||
import org.springframework.security.oauth2.client.resource.UserApprovalRequiredException;
|
||||
import org.springframework.security.oauth2.client.resource.UserRedirectRequiredException;
|
||||
import org.springframework.security.oauth2.client.token.AccessTokenProvider;
|
||||
import org.springframework.security.oauth2.client.token.AccessTokenRequest;
|
||||
import org.springframework.security.oauth2.client.token.DefaultRequestEnhancer;
|
||||
import org.springframework.security.oauth2.client.token.RequestEnhancer;
|
||||
|
@ -34,7 +32,7 @@ import org.springframework.util.LinkedMultiValueMap;
|
|||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.web.client.ResponseExtractor;
|
||||
|
||||
public class MyAuthorizationCodeAccessTokenProvider extends AuthorizationCodeAccessTokenProvider implements AccessTokenProvider {
|
||||
public class MyAuthorizationCodeAccessTokenProvider extends AuthorizationCodeAccessTokenProvider {
|
||||
|
||||
private StateKeyGenerator stateKeyGenerator = new DefaultStateKeyGenerator();
|
||||
|
||||
|
@ -42,31 +40,6 @@ public class MyAuthorizationCodeAccessTokenProvider extends AuthorizationCodeAcc
|
|||
|
||||
private RequestEnhancer authorizationRequestEnhancer = new DefaultRequestEnhancer();
|
||||
|
||||
@Override
|
||||
public void setAuthorizationRequestEnhancer(RequestEnhancer authorizationRequestEnhancer) {
|
||||
this.authorizationRequestEnhancer = authorizationRequestEnhancer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setScopePrefix(String scopePrefix) {
|
||||
this.scopePrefix = scopePrefix;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStateKeyGenerator(StateKeyGenerator stateKeyGenerator) {
|
||||
this.stateKeyGenerator = stateKeyGenerator;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsResource(OAuth2ProtectedResourceDetails resource) {
|
||||
return resource instanceof AuthorizationCodeResourceDetails && "authorization_code".equals(resource.getGrantType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsRefresh(OAuth2ProtectedResourceDetails resource) {
|
||||
return supportsResource(resource);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String obtainAuthorizationCode(OAuth2ProtectedResourceDetails details, AccessTokenRequest request) throws UserRedirectRequiredException, UserApprovalRequiredException, AccessDeniedException, OAuth2AccessDeniedException {
|
||||
|
||||
|
@ -127,15 +100,6 @@ public class MyAuthorizationCodeAccessTokenProvider extends AuthorizationCodeAcc
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected ResponseExtractor<ResponseEntity<Void>> getAuthorizationResponseExtractor() {
|
||||
return new ResponseExtractor<ResponseEntity<Void>>() {
|
||||
public ResponseEntity<Void> extractData(ClientHttpResponse response) throws IOException {
|
||||
return new ResponseEntity<Void>(response.getHeaders(), response.getStatusCode());
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public OAuth2AccessToken obtainAccessToken(OAuth2ProtectedResourceDetails details, AccessTokenRequest request) throws UserRedirectRequiredException, UserApprovalRequiredException, AccessDeniedException, OAuth2AccessDeniedException {
|
||||
|
||||
|
@ -287,9 +251,4 @@ public class MyAuthorizationCodeAccessTokenProvider extends AuthorizationCodeAcc
|
|||
|
||||
}
|
||||
|
||||
protected UserApprovalRequiredException getUserApprovalSignal(AuthorizationCodeResourceDetails resource, AccessTokenRequest request) {
|
||||
String message = String.format("Do you approve the client '%s' to access your resources with scope=%s", resource.getClientId(), resource.getScope());
|
||||
return new UserApprovalRequiredException(resource.getUserAuthorizationUri(), Collections.singletonMap(OAuth2Utils.USER_OAUTH_APPROVAL, message), resource.getClientId(), resource.getScope());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package org.baeldung.web;
|
||||
|
||||
import org.springframework.security.oauth2.client.OAuth2RestTemplate;
|
||||
import org.springframework.security.oauth2.client.resource.UserApprovalRequiredException;
|
||||
import org.springframework.security.oauth2.client.resource.UserRedirectRequiredException;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
|
@ -14,11 +16,19 @@ public class RedditController {
|
|||
private OAuth2RestTemplate redditRestTemplate;
|
||||
|
||||
@RequestMapping("/info")
|
||||
public String getInfo(Model model) throws Exception {
|
||||
String result = redditRestTemplate.getForObject("https://oauth.reddit.com/api/v1/me", String.class);
|
||||
JsonNode node = new ObjectMapper().readTree(result);
|
||||
String name = node.get("name").asText();
|
||||
model.addAttribute("info", name);
|
||||
public String getInfo(Model model) {
|
||||
try {
|
||||
String result = redditRestTemplate.getForObject("https://oauth.reddit.com/api/v1/me", String.class);
|
||||
JsonNode node = new ObjectMapper().readTree(result);
|
||||
String name = node.get("name").asText();
|
||||
model.addAttribute("info", name);
|
||||
} catch (UserApprovalRequiredException e) {
|
||||
throw e;
|
||||
} catch (UserRedirectRequiredException e) {
|
||||
throw e;
|
||||
} catch (Exception e) {
|
||||
model.addAttribute("error", e.getLocalizedMessage());
|
||||
}
|
||||
return "reddit";
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
|
@ -6,7 +5,12 @@
|
|||
<title>Spring Security OAuth</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Your Reddit Info</h1>
|
||||
<b>Your reddit username is </b>${info}
|
||||
<c:choose>
|
||||
<c:when test="${info != null}">
|
||||
<h1>Your Reddit Info</h1>
|
||||
<b>Your reddit username is </b>${info}
|
||||
</c:when>
|
||||
<c:otherwise> Sorry, error occurred.</c:otherwise>
|
||||
</c:choose>
|
||||
</body>
|
||||
</html>
|
|
@ -1,12 +0,0 @@
|
|||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
|
||||
<title>Spring Security OAuth</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Test</h1>
|
||||
<b>Test </b>${info}
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue