gluu
公開メンバ関数 | 静的公開メンバ関数 | 非公開変数類 | 全メンバ一覧
org.xdi.oxauth.service.RedirectionUriService クラス
org.xdi.oxauth.service.RedirectionUriService 連携図
Collaboration graph

公開メンバ関数

String validateRedirectionUri (String clientIdentifier, String redirectionUri)
 
String validatePostLogoutRedirectUri (String clientId, String postLogoutRedirectUri)
 
String validatePostLogoutRedirectUri (SessionId sessionId, String postLogoutRedirectUri)
 

静的公開メンバ関数

static Map< String, String > getParams (String uri)
 
static String uriWithoutParams (String uri)
 
static boolean compareParams (String uri1, String uri2)
 

非公開変数類

Logger log
 
ClientService clientService
 
ErrorResponseFactory errorResponseFactory
 

詳解

著者
Javier Rojas Blum
バージョン
August 9, 2017

関数詳解

◆ compareParams()

static boolean org.xdi.oxauth.service.RedirectionUriService.compareParams ( String  uri1,
String  uri2 
)
inlinestatic
202  {
203  if (StringUtils.isBlank(uri1) || StringUtils.isBlank(uri2)) {
204  return false;
205  }
206 
207  Map<String, String> params1 = getParams(uri1);
208  Map<String, String> params2 = getParams(uri2);
209 
210  return params1.equals(params2);
211  }
static Map< String, String > getParams(String uri)
Definition: RedirectionUriService.java:179

◆ getParams()

static Map<String, String> org.xdi.oxauth.service.RedirectionUriService.getParams ( String  uri)
inlinestatic
179  {
180  Map<String, String> params = new HashMap<String, String>();
181 
182  if (uri != null) {
183  int paramsIndex = uri.indexOf("?");
184  if (paramsIndex != -1) {
185  String queryString = uri.substring(paramsIndex + 1);
186  params = QueryStringDecoder.decode(queryString);
187  }
188  }
189  return params;
190  }

◆ uriWithoutParams()

static String org.xdi.oxauth.service.RedirectionUriService.uriWithoutParams ( String  uri)
inlinestatic
192  {
193  if (uri != null) {
194  int paramsIndex = uri.indexOf("?");
195  if (paramsIndex != -1) {
196  return uri.substring(0, paramsIndex);
197  }
198  }
199  return uri;
200  }

◆ validatePostLogoutRedirectUri() [1/2]

String org.xdi.oxauth.service.RedirectionUriService.validatePostLogoutRedirectUri ( String  clientId,
String  postLogoutRedirectUri 
)
inline
111  {
112 
113  boolean isBlank = Util.isNullOrEmpty(postLogoutRedirectUri);
114 
115  Client client = clientService.getClient(clientId);
116 
117  if (client != null) {
118  String[] postLogoutRedirectUris = client.getPostLogoutRedirectUris();
119 
120  if (postLogoutRedirectUris != null && StringUtils.isNotBlank(postLogoutRedirectUri)) {
121  log.debug("Validating post logout redirect URI: clientId = {}, postLogoutRedirectUri = {}",
122  clientId, postLogoutRedirectUri);
123 
124  for (String uri : postLogoutRedirectUris) {
125  log.debug("Comparing {} == {}", uri, postLogoutRedirectUri);
126  if (uri.equals(postLogoutRedirectUri)) {
127  return postLogoutRedirectUri;
128  }
129  }
130  } else {
131  // Accept Request Without post_logout_redirect_uri when One Registered
132  if (postLogoutRedirectUris != null && postLogoutRedirectUris.length == 1) {
133  return postLogoutRedirectUris[0];
134  }
135  }
136  }
137 
138  if (!isBlank) {
139  errorResponseFactory.throwBadRequestException(EndSessionErrorResponseType.POST_LOGOUT_URI_NOT_ASSOCIATED_WITH_CLIENT);
140  }
141 
142  return null;
143  }
ErrorResponseFactory errorResponseFactory
Definition: RedirectionUriService.java:48
void throwBadRequestException(IErrorType type)
Definition: ErrorResponseFactory.java:100
Set< Client > getClient(Collection< String > clientIds, boolean silent)
Definition: ClientService.java:123
Logger log
Definition: RedirectionUriService.java:42
ClientService clientService
Definition: RedirectionUriService.java:45

◆ validatePostLogoutRedirectUri() [2/2]

String org.xdi.oxauth.service.RedirectionUriService.validatePostLogoutRedirectUri ( SessionId  sessionId,
String  postLogoutRedirectUri 
)
inline
145  {
146  if (sessionId == null) {
147  errorResponseFactory.throwBadRequestException(EndSessionErrorResponseType.SESSION_NOT_PASSED);
148  return null;
149  }
150  if (Strings.isNullOrEmpty(postLogoutRedirectUri)) {
151  errorResponseFactory.throwBadRequestException(EndSessionErrorResponseType.POST_LOGOUT_URI_NOT_PASSED);
152  return null;
153  }
154 
155  final Set<Client> clientsByDns = sessionId.getPermissionGrantedMap() != null
156  ? clientService.getClient(sessionId.getPermissionGrantedMap().getClientIds(true), true)
157  : Sets.<Client>newHashSet();
158 
159  log.trace("Validating post logout redirect URI: postLogoutRedirectUri = {}", postLogoutRedirectUri);
160 
161  for (Client client : clientsByDns) {
162  String[] postLogoutRedirectUris = client.getPostLogoutRedirectUris();
163  if (postLogoutRedirectUris == null) {
164  continue;
165  }
166 
167  for (String uri : postLogoutRedirectUris) {
168  log.debug("Comparing {} == {}, clientId: {}", uri, postLogoutRedirectUri, client.getClientId());
169  if (uri.equals(postLogoutRedirectUri)) {
170  return postLogoutRedirectUri;
171  }
172  }
173  }
174 
175  errorResponseFactory.throwBadRequestException(EndSessionErrorResponseType.POST_LOGOUT_URI_NOT_ASSOCIATED_WITH_CLIENT);
176  return null;
177  }
ErrorResponseFactory errorResponseFactory
Definition: RedirectionUriService.java:48
void throwBadRequestException(IErrorType type)
Definition: ErrorResponseFactory.java:100
Set< Client > getClient(Collection< String > clientIds, boolean silent)
Definition: ClientService.java:123
Logger log
Definition: RedirectionUriService.java:42
ClientService clientService
Definition: RedirectionUriService.java:45

◆ validateRedirectionUri()

String org.xdi.oxauth.service.RedirectionUriService.validateRedirectionUri ( String  clientIdentifier,
String  redirectionUri 
)
inline
50  {
51  try {
52  Client client = clientService.getClient(clientIdentifier);
53 
54  if (client != null) {
55  String sectorIdentifierUri = client.getSectorIdentifierUri();
56  String[] redirectUris = client.getRedirectUris();
57 
58  if (StringUtils.isNotBlank(sectorIdentifierUri)) {
59  ClientRequest clientRequest = new ClientRequest(sectorIdentifierUri);
60  clientRequest.setHttpMethod(HttpMethod.GET);
61 
62  ClientResponse<String> clientResponse = clientRequest.get(String.class);
63  int status = clientResponse.getStatus();
64 
65  if (status == 200) {
66  String entity = clientResponse.getEntity(String.class);
67  JSONArray sectorIdentifierJsonArray = new JSONArray(entity);
68  redirectUris = new String[sectorIdentifierJsonArray.length()];
69  for (int i = 0; i < sectorIdentifierJsonArray.length(); i++) {
70  redirectUris[i] = sectorIdentifierJsonArray.getString(i);
71  }
72  } else {
73  return null;
74  }
75  }
76 
77  if (StringUtils.isNotBlank(redirectionUri) && redirectUris != null) {
78  log.debug("Validating redirection URI: clientIdentifier = {}, redirectionUri = {}, found = {}",
79  clientIdentifier, redirectionUri, redirectUris.length);
80 
81  final String redirectUriWithoutParams = uriWithoutParams(redirectionUri);
82 
83  for (String uri : redirectUris) {
84  log.debug("Comparing {} == {}", uri, redirectionUri);
85  if (uri.equals(redirectionUri)) { // compare complete uri
86  return redirectionUri;
87  }
88 
89  String uriWithoutParams = uriWithoutParams(uri);
90  final Map<String, String> params = getParams(uri);
91 
92  if ((uriWithoutParams.equals(redirectUriWithoutParams) && params.size() == 0 && getParams(redirectionUri).size() == 0) ||
93  uriWithoutParams.equals(redirectUriWithoutParams) && params.size() > 0 && compareParams(redirectionUri, uri)) {
94  return redirectionUri;
95  }
96  }
97  } else {
98  // Accept Request Without redirect_uri when One Registered
99  if (redirectUris != null && redirectUris.length == 1) {
100  return redirectUris[0];
101  }
102  }
103  }
104  } catch (Exception e) {
105  return null;
106  }
107 
108  return null;
109  }
static Map< String, String > getParams(String uri)
Definition: RedirectionUriService.java:179
static String uriWithoutParams(String uri)
Definition: RedirectionUriService.java:192
static boolean compareParams(String uri1, String uri2)
Definition: RedirectionUriService.java:202
Set< Client > getClient(Collection< String > clientIds, boolean silent)
Definition: ClientService.java:123
Logger log
Definition: RedirectionUriService.java:42
ClientService clientService
Definition: RedirectionUriService.java:45

メンバ詳解

◆ clientService

ClientService org.xdi.oxauth.service.RedirectionUriService.clientService
private

◆ errorResponseFactory

ErrorResponseFactory org.xdi.oxauth.service.RedirectionUriService.errorResponseFactory
private

◆ log

Logger org.xdi.oxauth.service.RedirectionUriService.log
private

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