keycloak-service
静的公開メンバ関数 | 全メンバ一覧
org.keycloak.protocol.oidc.endpoints.request.AuthorizationEndpointRequestParserProcessor クラス
org.keycloak.protocol.oidc.endpoints.request.AuthorizationEndpointRequestParserProcessor 連携図
Collaboration graph

静的公開メンバ関数

static AuthorizationEndpointRequest parseRequest (EventBuilder event, KeycloakSession session, ClientModel client, MultivaluedMap< String, String > requestParams)
 

詳解

著者
Marek Posolda

関数詳解

◆ parseRequest()

static AuthorizationEndpointRequest org.keycloak.protocol.oidc.endpoints.request.AuthorizationEndpointRequestParserProcessor.parseRequest ( EventBuilder  event,
KeycloakSession  session,
ClientModel  client,
MultivaluedMap< String, String >  requestParams 
)
inlinestatic
42  {
43  try {
44  AuthorizationEndpointRequest request = new AuthorizationEndpointRequest();
45 
46  new AuthzEndpointQueryStringParser(requestParams).parseRequest(request);
47 
48  String requestParam = requestParams.getFirst(OIDCLoginProtocol.REQUEST_PARAM);
49  String requestUriParam = requestParams.getFirst(OIDCLoginProtocol.REQUEST_URI_PARAM);
50 
51  if (requestParam != null && requestUriParam != null) {
52  throw new RuntimeException("Illegal to use both 'request' and 'request_uri' parameters together");
53  }
54 
55  String requestObjectRequired = OIDCAdvancedConfigWrapper.fromClientModel(client).getRequestObjectRequired();
56 
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.");
66  }
67 
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);
73 
74  new AuthzEndpointRequestObjectParser(session, retrievedRequest, client).parseRequest(request);
75  }
76 
77  return request;
78 
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);
83  }
84  }

このクラス詳解は次のファイルから抽出されました: