44 AuthorizationEndpointRequest request =
new AuthorizationEndpointRequest();
46 new AuthzEndpointQueryStringParser(requestParams).parseRequest(request);
48 String requestParam = requestParams.getFirst(OIDCLoginProtocol.REQUEST_PARAM);
49 String requestUriParam = requestParams.getFirst(OIDCLoginProtocol.REQUEST_URI_PARAM);
51 if (requestParam != null && requestUriParam != null) {
52 throw new RuntimeException(
"Illegal to use both 'request' and 'request_uri' parameters together");
55 String requestObjectRequired = OIDCAdvancedConfigWrapper.fromClientModel(client).getRequestObjectRequired();
57 if (OIDCConfigAttributes.REQUEST_OBJECT_REQUIRED_REQUEST_OR_REQUEST_URI.equals(requestObjectRequired)
58 && requestParam == null && requestUriParam == null) {
59 throw new RuntimeException(
"Client is required to use 'request' or 'request_uri' parameter.");
60 }
else if (OIDCConfigAttributes.REQUEST_OBJECT_REQUIRED_REQUEST.equals(requestObjectRequired)
61 && requestParam == null) {
62 throw new RuntimeException(
"Client is required to use 'request' parameter.");
63 }
else if (OIDCConfigAttributes.REQUEST_OBJECT_REQUIRED_REQUEST_URI.equals(requestObjectRequired)
64 && requestUriParam == null) {
65 throw new RuntimeException(
"Client is required to use 'request_uri' parameter.");
68 if (requestParam != null) {
69 new AuthzEndpointRequestObjectParser(session, requestParam, client).parseRequest(request);
70 }
else if (requestUriParam != null) {
71 InputStream is = session.getProvider(HttpClientProvider.class).get(requestUriParam);
72 String retrievedRequest = StreamUtil.readString(is);
74 new AuthzEndpointRequestObjectParser(session, retrievedRequest, client).parseRequest(request);
79 }
catch (Exception e) {
80 ServicesLogger.LOGGER.invalidRequest(e);
81 event.error(Errors.INVALID_REQUEST);
82 throw new ErrorPageException(session, Response.Status.BAD_REQUEST, Messages.INVALID_REQUEST);