use of org.apache.oltu.oauth2.common.exception.OAuthSystemException in project entando-core by entando.
the class AuthEndpointServlet method doGet.
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
OAuthAuthzRequest oauthRequest = null;
OAuthIssuerImpl oauthIssuerImpl = new OAuthIssuerImpl(new MD5Generator());
IApiOAuthorizationCodeManager codeManager = (IApiOAuthorizationCodeManager) ApsWebApplicationUtils.getBean(SystemConstants.OAUTH2_AUTHORIZATION_CODE_MANAGER, request);
try {
oauthRequest = new OAuthAuthzRequest(request);
if (validateClient(oauthRequest, request, response)) {
// build response according to response_type
String responseType = oauthRequest.getParam(OAuth.OAUTH_RESPONSE_TYPE) == null ? OAuth.OAUTH_RESPONSE_TYPE : oauthRequest.getParam(OAuth.OAUTH_RESPONSE_TYPE);
OAuthASResponse.OAuthAuthorizationResponseBuilder builder = OAuthASResponse.authorizationResponse(request, HttpServletResponse.SC_FOUND);
final String authorizationCode = oauthIssuerImpl.authorizationCode();
final int expires = 3;
AuthorizationCode authCode = new AuthorizationCode();
authCode.setAuthorizationCode(authorizationCode);
// gets a calendar using the default time zone and locale.
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.SECOND, expires);
authCode.setExpires(calendar.getTimeInMillis());
authCode.setClientId(oauthRequest.getClientId());
authCode.setSource(request.getRemoteAddr());
codeManager.addAuthorizationCode(authCode);
if (responseType.equals(ResponseType.CODE.toString())) {
builder.setCode(authorizationCode);
}
if (responseType.equals(ResponseType.TOKEN.toString())) {
builder.setAccessToken(authorizationCode);
builder.setExpiresIn((long) expires);
}
String redirectURI = oauthRequest.getParam(OAuth.OAUTH_REDIRECT_URI);
final OAuthResponse resp = builder.location(redirectURI).buildQueryMessage();
final int status = resp.getResponseStatus();
response.setStatus(status);
response.sendRedirect(resp.getLocationUri());
} else {
logger.warn("OAuth2 authentication failed");
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
}
} catch (OAuthSystemException ex) {
logger.error("System exception {} ", ex.getMessage());
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
} catch (OAuthProblemException ex) {
logger.error("OAuth2 error {} ", ex.getMessage());
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
} catch (IOException e) {
logger.error("IOException {} ", e);
}
}
use of org.apache.oltu.oauth2.common.exception.OAuthSystemException in project entando-core by entando.
the class TokenEndpointServlet method doPost.
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
final OAuthResponse oAuthResponse = this.validateClientWithAuthorizationCode(request);
if (oAuthResponse != null) {
response.setStatus(oAuthResponse.getResponseStatus());
PrintWriter pw = response.getWriter();
pw.print(oAuthResponse.getBody());
pw.flush();
pw.close();
} else {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, ERROR_AUTHENTICATION_FAILED);
}
} catch (Throwable e) {
_logger.error("OAuthSystemException exception {} ", e.getMessage());
try {
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
} catch (IOException e1) {
_logger.error("IOException - IOException exception {} ", e1);
}
}
}
use of org.apache.oltu.oauth2.common.exception.OAuthSystemException in project identity-test-integration by wso2-incubator.
the class LoginProxy method getAuthzCode.
/**
* this is the first API, the SPA should call to initiate user authentication. this method will redirect the user to
* the identity server's OAuth 2.0 authorization endpoint.the value of the code parameter will be written to a
* cookie, so it can be accessed when get redirected back from the identity server, after user authentication.
*
* @param spaName paName is a unique identifier for each SPA, and the proxy application should be aware of that
* identifier.the proxy end-point uses the spaName later to load the callback URL corresponding to the
* SPA.
* @param code each times the SPA gets rendered on the browser it has to generate the code.spas should not uses
* statically configured code values.
* @return
*/
@Path("login")
@GET
public Response getAuthzCode(@QueryParam("spaName") String spaName, @QueryParam("code") String code) {
if (spaName == null || spaName.isEmpty()) {
return ProxyUtils.handleResponse(ProxyUtils.OperationStatus.BAD_REQUEST, ProxyFaultCodes.ERROR_002, ProxyFaultCodes.Name.INVALID_INPUTS, "The value of the spaName cannot be null.");
}
if (code == null || code.isEmpty()) {
return ProxyUtils.handleResponse(ProxyUtils.OperationStatus.BAD_REQUEST, ProxyFaultCodes.ERROR_002, ProxyFaultCodes.Name.INVALID_INPUTS, "The value of the code cannot be null.");
}
HttpServletResponse resp = context.getHttpServletResponse();
// loads the client key corresponding to the SPA. you do not need to have SPA specific consumer keys, rather can
// use one client key for all the SPAs. you get the consumer key from the identity server, at the time you
// register the service provider, and configure it in oauth_proxy.properties file.
String consumerKey = ProxyUtils.getConsumerKey(spaName);
// this is the OpenID 2.0 authorization end-point of the identity server.
String authzEndpoint = ProxyUtils.getAuthzEp();
// get the grant type. the proxy works only with the authorization code grant type.
String authzGrantType = ProxyUtils.getAuthzGrantType();
// get the scope associated with the SPA. each SPA can define its own scopes in the oauth_proxy.properties file,
// but in each case OPENID is used as a mandatory scope value.
String scope = ProxyUtils.getScope(spaName);
// load the callback URL of the proxy. there is only one callback URL. even when you create multiple service
// providers in identity server to get multiple client key/client secret pairs, the callback URL would be the
// same.
String callbackUrl = ProxyUtils.getCallbackUrl();
OAuthClientRequest authzRequest = null;
try {
// create a cookie under the proxy domain having code as the key and spaName as the value.
Cookie cookie = new Cookie(code, spaName);
// this cookie is only accessible by HTTPS transport.
cookie.setSecure(true);
// add cookie to the response.
resp.addCookie(cookie);
// create the OAuth 2.0 request with all necessary parameters. the code passed by the SPA is set as the
// state - so the identity server will return it back with the OAuth response. we use the value of the code
// (or the state here) to retrieve the cookie later. this is done in a way to make this proxy application
// state-less.
authzRequest = OAuthClientRequest.authorizationLocation(authzEndpoint).setClientId(consumerKey).setRedirectURI(callbackUrl).setResponseType(authzGrantType).setScope(scope).setState(code).buildQueryMessage();
} catch (OAuthSystemException e) {
log.error(e);
return ProxyUtils.handleResponse(ProxyUtils.OperationStatus.INTERNAL_SERVER_ERROR, ProxyFaultCodes.ERROR_003, ProxyFaultCodes.Name.INTERNAL_SERVER_ERROR, e.getMessage());
}
try {
// redirects the user to the identity server's authorization end-point.
resp.sendRedirect(authzRequest.getLocationUri());
return null;
} catch (IOException e) {
log.error(e);
return ProxyUtils.handleResponse(ProxyUtils.OperationStatus.INTERNAL_SERVER_ERROR, ProxyFaultCodes.ERROR_003, ProxyFaultCodes.Name.INTERNAL_SERVER_ERROR, e.getMessage());
}
}
use of org.apache.oltu.oauth2.common.exception.OAuthSystemException in project BIMserver by opensourceBIM.
the class JsonHandler method getServiceMap.
private ServiceMap getServiceMap(HttpServletRequest httpRequest, BimServer bimServer, String methodName, String token, String oAuthCode) throws UserException {
if (token == null) {
token = httpRequest == null ? null : (String) httpRequest.getSession().getAttribute("token");
}
if (token == null) {
token = oAuthCode;
}
if (token == null) {
if (httpRequest != null) {
try {
OAuthAccessResourceRequest oauthRequest = new OAuthAccessResourceRequest(httpRequest, ParameterStyle.HEADER);
token = oauthRequest.getAccessToken();
} catch (OAuthSystemException e) {
} catch (OAuthProblemException e) {
}
}
}
if (token == null) {
return null;
}
ServiceMap serviceMap = bimServer.getServiceFactory().get(token, AccessMethod.JSON);
return serviceMap;
}
use of org.apache.oltu.oauth2.common.exception.OAuthSystemException in project BIMserver by opensourceBIM.
the class SendUrl method main.
public static void main(String[] args) {
try {
OAuthClientRequest request = OAuthClientRegistrationRequest.location("https://thisisanexperimentalserver.com/oauth/register/", OAuthRegistration.Type.PUSH).setName("Zapier").setUrl("https://zapier.com/dashboard/auth/oauth/return/App56192API").setDescription("App Description").setRedirectURL("https://zapier.com/dashboard/auth/oauth/return/App56192API").buildJSONMessage();
OAuthRegistrationClient oauthclient = new OAuthRegistrationClient(new org.bimserver.webservices.impl.URLConnectionClient());
OAuthClientRegistrationResponse response = oauthclient.clientInfo(request);
System.out.println(response.getClientId());
System.out.println(response.getClientSecret());
} catch (OAuthSystemException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (OAuthProblemException e) {
e.printStackTrace();
}
}
Aggregations