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

公開メンバ関数

 IntrospectionService (HttpService httpService, UmaTokenService umaTokenService, DiscoveryService discoveryService)
 
IntrospectionResponse introspectToken (String oxdId, String accessToken)
 
CorrectRptIntrospectionResponse introspectRpt (String oxdId, String rpt)
 

静的公開メンバ関数

static Integer dateToSeconds (Date date)
 

非公開メンバ関数

IntrospectionResponse introspectToken (String oxdId, String accessToken, boolean retry)
 
CorrectRptIntrospectionResponse introspectRpt (String oxdId, String rpt, boolean retry)
 

非公開変数類

HttpService httpService
 
UmaTokenService umaTokenService
 
DiscoveryService discoveryService
 

静的非公開変数類

static final Logger LOG = LoggerFactory.getLogger(IntrospectionService.class)
 

詳解

著者
yuriyz

構築子と解体子

◆ IntrospectionService()

org.xdi.oxd.server.service.IntrospectionService.IntrospectionService ( HttpService  httpService,
UmaTokenService  umaTokenService,
DiscoveryService  discoveryService 
)
inline
31  {
32  this.httpService = httpService;
35  }
DiscoveryService discoveryService
Definition: IntrospectionService.java:28
HttpService httpService
Definition: IntrospectionService.java:26
UmaTokenService umaTokenService
Definition: IntrospectionService.java:27

関数詳解

◆ dateToSeconds()

static Integer org.xdi.oxd.server.service.IntrospectionService.dateToSeconds ( Date  date)
inlinestatic
143  {
144  return date != null ? (int) (date.getTime() / 1000) : null;
145  }

◆ introspectRpt() [1/2]

CorrectRptIntrospectionResponse org.xdi.oxd.server.service.IntrospectionService.introspectRpt ( String  oxdId,
String  rpt 
)
inline
87  {
88  return introspectRpt(oxdId, rpt, true);
89  }
CorrectRptIntrospectionResponse introspectRpt(String oxdId, String rpt)
Definition: IntrospectionService.java:87

◆ introspectRpt() [2/2]

CorrectRptIntrospectionResponse org.xdi.oxd.server.service.IntrospectionService.introspectRpt ( String  oxdId,
String  rpt,
boolean  retry 
)
inlineprivate
91  {
92  final UmaMetadata metadata = discoveryService.getUmaDiscoveryByOxdId(oxdId);
93 
94  try {
96  return introspectionService.requestRptStatus("Bearer " + umaTokenService.getPat(oxdId).getToken(), rpt, "");
97  } catch (ClientResponseFailure e) {
98  int httpStatus = e.getResponse().getStatus();
99  if (retry && (httpStatus == 401 || httpStatus == 400 || httpStatus == 403)) {
101  return introspectRpt(oxdId, rpt, false);
102  } else {
103  throw e;
104  }
105  } catch (Throwable e) {
106  LOG.trace("Exception during rpt introspection, message: " + e.getMessage());
107  if (e instanceof ReaderException) { // dummy construction but checked JsonParseException is thrown inside jackson provider, so we don't have choice
108  // trying to handle compatiblity issue.
109  LOG.trace("Trying to handle compatibility issue ...");
111  BadRptIntrospectionResponse badResponse = badService.requestRptStatus("Bearer " + umaTokenService.getPat(oxdId).getToken(), rpt, "");
112 
113  LOG.trace("Handled compatibility issue. Response: " + badResponse);
114 
115  final List<CorrectUmaPermission> permissions = new ArrayList<>();
116 
118  response.setActive(badResponse.getActive());
119  response.setClientId(badResponse.getClientId());
120  response.setJti(badResponse.getJti());
121  response.setExpiresAt(dateToSeconds(badResponse.getExpiresAt()));
122  response.setIssuedAt(dateToSeconds(badResponse.getIssuedAt()));
123  response.setNbf(dateToSeconds(badResponse.getNbf()));
124  response.setPermissions(permissions);
125 
126  if (badResponse.getPermissions() != null) {
127  for (BadUmaPermission badPermission : badResponse.getPermissions()) {
128  CorrectUmaPermission p = new CorrectUmaPermission();
129  p.setExpiresAt(dateToSeconds(badPermission.getExpiresAt()));
130  p.setResourceId(badPermission.getResourceId());
131  p.setScopes(badPermission.getScopes());
132 
133  permissions.add(p);
134  }
135  }
136 
137  return response;
138  }
139  throw e;
140  }
141  }
Pat getPat(String oxdId)
Definition: UmaTokenService.java:127
Definition: CorrectRptIntrospectionResponse.java:19
ClientExecutor getClientExecutor()
Definition: HttpService.java:57
DiscoveryService discoveryService
Definition: IntrospectionService.java:28
String getToken()
Definition: UmaToken.java:33
String getClientId()
Definition: BadRptIntrospectionResponse.java:93
static final Logger LOG
Definition: IntrospectionService.java:24
BadRptIntrospectionResponse requestRptStatus(@HeaderParam("Authorization") String authorization, @FormParam("token") String rptAsString, @FormParam("token_type_hint") String tokenTypeHint)
List< BadUmaPermission > getPermissions()
Definition: BadRptIntrospectionResponse.java:153
HttpService httpService
Definition: IntrospectionService.java:26
UmaTokenService umaTokenService
Definition: IntrospectionService.java:27
Definition: ClientFactory.java:10
Date getNbf()
Definition: BadRptIntrospectionResponse.java:117
UmaMetadata getUmaDiscoveryByOxdId(String oxdId)
Definition: DiscoveryService.java:85
Definition: BadRptIntrospectionResponse.java:22
Date getIssuedAt()
Definition: BadRptIntrospectionResponse.java:141
Definition: UmaMetadata.java:28
CorrectRptIntrospectionResponse requestRptStatus(@HeaderParam("Authorization") String authorization, @FormParam("token") String rptAsString, @FormParam("token_type_hint") String tokenTypeHint)
Pat obtainPat(String oxdId)
Definition: UmaTokenService.java:146
Date getExpiresAt()
Definition: BadRptIntrospectionResponse.java:129
CorrectRptIntrospectionResponse introspectRpt(String oxdId, String rpt)
Definition: IntrospectionService.java:87
CorrectRptIntrospectionService createCorrectRptStatusService(UmaMetadata metadata)
Definition: ClientFactory.java:36
static ClientFactory instance()
Definition: ClientFactory.java:16
Definition: BadUmaPermission.java:21
Definition: CorrectRptIntrospectionService.java:14
Definition: BadRptIntrospectionService.java:13
static Integer dateToSeconds(Date date)
Definition: IntrospectionService.java:143
boolean getActive()
Definition: BadRptIntrospectionResponse.java:105
BadRptIntrospectionService createBadRptStatusService(UmaMetadata metadata)
Definition: ClientFactory.java:28
String getJti()
Definition: BadRptIntrospectionResponse.java:69

◆ introspectToken() [1/2]

IntrospectionResponse org.xdi.oxd.server.service.IntrospectionService.introspectToken ( String  oxdId,
String  accessToken 
)
inline
37  {
38  return introspectToken(oxdId, accessToken, true);
39  }
IntrospectionResponse introspectToken(String oxdId, String accessToken)
Definition: IntrospectionService.java:37

◆ introspectToken() [2/2]

IntrospectionResponse org.xdi.oxd.server.service.IntrospectionService.introspectToken ( String  oxdId,
String  accessToken,
boolean  retry 
)
inlineprivate
41  {
42  final String introspectionEndpoint = discoveryService.getConnectDiscoveryResponseByOxdId(oxdId).getIntrospectionEndpoint();
43  final org.xdi.oxauth.client.service.IntrospectionService introspectionService = ProxyFactory.create(org.xdi.oxauth.client.service.IntrospectionService.class, introspectionEndpoint, httpService.getClientExecutor());
44 
45  try {
46  IntrospectionResponse response = introspectionService.introspectToken("Bearer " + umaTokenService.getPat(oxdId).getToken(), accessToken);
47  return response; // we need local variable to force convertion here
48  } catch (ClientResponseFailure e) {
49  int status = e.getResponse().getStatus();
50  LOG.debug("Failed to introspect token. Entity: " + e.getResponse().getEntity(String.class) + ", status: " + status, e);
51  if (retry && (status == 400 || status == 401)) {
52  LOG.debug("Try maybe PAT is lost on AS, force refresh PAT and re-try ...");
53  umaTokenService.obtainPat(oxdId); // force to refresh PAT
54  return introspectToken(oxdId, accessToken, false);
55  } else {
56  throw e;
57  }
58  } catch (Throwable e) {
59  LOG.trace("Exception during access token introspection.", e);
60  if (e instanceof ReaderException) { // dummy construction but checked JsonParseException is thrown inside jackson provider, so we don't have choice
61  // trying to handle compatiblity issue.
62  LOG.trace("Trying to handle compatibility issue ...");
64  BackCompatibleIntrospectionResponse backResponse = backCompatibleIntrospectionService.introspectToken("Bearer " + umaTokenService.getPat(oxdId).getToken(), accessToken);
65  LOG.trace("Handled compatibility issue. Response: " + backResponse);
66 
67  IntrospectionResponse response = new IntrospectionResponse();
68  response.setSub(backResponse.getSubject());
69  response.setAudience(backResponse.getAudience());
70  response.setTokenType(backResponse.getTokenType());
71  response.setActive(backResponse.isActive());
72  response.setScopes(backResponse.getScopes());
73  response.setIssuer(backResponse.getIssuer());
74  response.setUsername(backResponse.getUsername());
75  response.setClientId(backResponse.getClientId());
76  response.setJti(backResponse.getJti());
77  response.setAcrValues(backResponse.getAcrValues());
78  response.setExpiresAt(dateToSeconds(backResponse.getExpiresAt()));
79  response.setIssuedAt(dateToSeconds(backResponse.getIssuedAt()));
80 
81  return response;
82  }
83  throw e;
84  }
85  }
Pat getPat(String oxdId)
Definition: UmaTokenService.java:127
List< String > getScopes()
Definition: BackCompatibleIntrospectionResponse.java:75
BackCompatibleIntrospectionResponse introspectToken(@HeaderParam("Authorization") String p_authorization, @FormParam("token") String p_token)
ClientExecutor getClientExecutor()
Definition: HttpService.java:57
String getIntrospectionEndpoint()
Definition: OpenIdConfigurationResponse.java:343
boolean isActive()
Definition: BackCompatibleIntrospectionResponse.java:67
DiscoveryService discoveryService
Definition: IntrospectionService.java:28
IntrospectionResponse introspectToken(String oxdId, String accessToken)
Definition: IntrospectionService.java:37
String getToken()
Definition: UmaToken.java:33
IntrospectionResponse introspectToken(@HeaderParam("Authorization") String p_authorization, @FormParam("token") String p_token)
Date getIssuedAt()
Definition: BackCompatibleIntrospectionResponse.java:91
String getAcrValues()
Definition: BackCompatibleIntrospectionResponse.java:59
static final Logger LOG
Definition: IntrospectionService.java:24
Definition: BackCompatibleIntrospectionService.java:11
Definition: ClientFactory.java:7
String getIssuer()
Definition: BackCompatibleIntrospectionResponse.java:139
String getSubject()
Definition: BackCompatibleIntrospectionResponse.java:123
String getJti()
Definition: BackCompatibleIntrospectionResponse.java:147
HttpService httpService
Definition: IntrospectionService.java:26
UmaTokenService umaTokenService
Definition: IntrospectionService.java:27
Definition: ClientFactory.java:10
String getUsername()
Definition: BackCompatibleIntrospectionResponse.java:107
Pat obtainPat(String oxdId)
Definition: UmaTokenService.java:146
String getClientId()
Definition: BackCompatibleIntrospectionResponse.java:99
static ClientFactory instance()
Definition: ClientFactory.java:16
String getAudience()
Definition: BackCompatibleIntrospectionResponse.java:131
Definition: IntrospectionService.java:21
String getTokenType()
Definition: BackCompatibleIntrospectionResponse.java:115
Definition: BackCompatibleIntrospectionResponse.java:25
Date getExpiresAt()
Definition: BackCompatibleIntrospectionResponse.java:83
OpenIdConfigurationResponse getConnectDiscoveryResponseByOxdId(String oxdId)
Definition: DiscoveryService.java:49
Definition: AuthorizationRequest.java:7
static Integer dateToSeconds(Date date)
Definition: IntrospectionService.java:143
BackCompatibleIntrospectionService createBackCompatibleIntrospectionService(String url)
Definition: ClientFactory.java:20

メンバ詳解

◆ discoveryService

DiscoveryService org.xdi.oxd.server.service.IntrospectionService.discoveryService
private

◆ httpService

HttpService org.xdi.oxd.server.service.IntrospectionService.httpService
private

◆ LOG

final Logger org.xdi.oxd.server.service.IntrospectionService.LOG = LoggerFactory.getLogger(IntrospectionService.class)
staticprivate

◆ umaTokenService

UmaTokenService org.xdi.oxd.server.service.IntrospectionService.umaTokenService
private

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