Browse Source

oauth 2 authorization

MaxKey 4 years ago
parent
commit
d8d781e6d9

+ 1 - 0
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/endpoint/TokenEndpoint.java

@@ -144,6 +144,7 @@ public class TokenEndpoint extends AbstractEndpoint {
 				}
 			}
 			
+			logger.debug("request parameters " + parameters);
 			// The scope was requested or determined during the authorization step
 			/**crystal.sea
 			 * code must uuid format

+ 16 - 1
maxkey-protocols/maxkey-protocol-oauth-2.0/src/main/java/org/maxkey/authz/oauth2/provider/userinfo/endpoint/UserInfoEndpoint.java

@@ -19,6 +19,7 @@ package org.maxkey.authz.oauth2.provider.userinfo.endpoint;
 
 import java.util.Arrays;
 import java.util.Date;
+import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Set;
 import java.util.UUID;
@@ -44,6 +45,7 @@ import org.maxkey.domain.apps.Apps;
 import org.maxkey.domain.apps.oauth2.provider.ClientDetails;
 import org.maxkey.persistence.service.AppsService;
 import org.maxkey.persistence.service.UserInfoService;
+import org.maxkey.util.AuthorizationHeaderUtils;
 import org.maxkey.util.Instance;
 import org.maxkey.util.JsonUtils;
 import org.maxkey.util.StringGenerator;
@@ -117,10 +119,23 @@ public class UserInfoEndpoint {
 	@RequestMapping(value="/oauth/v20/me") 
 	@ResponseBody
 	public String apiV20UserInfo(
-			@RequestParam(value = "access_token", required = true) String access_token,
+			@RequestParam(value = "access_token", required = false) String access_token,
+			@RequestHeader(value = "authorization", required = false) String authorization_bearer,
             HttpServletRequest request, 
             HttpServletResponse response) {
 	        response.setContentType(ContentType.APPLICATION_JSON_UTF8);
+	        if(access_token == null && authorization_bearer!= null) {
+	        	access_token = AuthorizationHeaderUtils.resolveBearer(authorization_bearer);
+	        }
+	        if(_logger.isTraceEnabled()) {
+	        	_logger.trace("getRequestURL : "+request.getRequestURL());
+		        Enumeration<String> headerNames = request.getHeaderNames();
+		        while (headerNames.hasMoreElements()) {
+		          String key = (String) headerNames.nextElement();
+		          String value = request.getHeader(key);
+		          _logger.trace("Header key "+key +" , value " + value);
+		        }
+	        }
 			String principal="";
 			if (!StringGenerator.uuidMatches(access_token)) {
 				return JsonUtils.gson2Json(accessTokenFormatError(access_token));