gluu
公開メンバ関数 | 限定公開メンバ関数 | 関数 | 非公開メンバ関数 | 静的非公開変数類 | 全メンバ一覧
org.xdi.oxd.server.op.RsCheckAccessOperation クラス
org.xdi.oxd.server.op.RsCheckAccessOperation の継承関係図
Inheritance graph
org.xdi.oxd.server.op.RsCheckAccessOperation 連携図
Collaboration graph

公開メンバ関数

CommandResponse execute (final RsCheckAccessParams params) throws Exception
 
Class< T > getParameterClass ()
 
getParams ()
 
Injector getInjector ()
 
HttpService getHttpService ()
 
IntrospectionService getIntrospectionService ()
 
PublicOpKeyService getKeyService ()
 
StateService getStateService ()
 
LicenseService getLicenseService ()
 
DiscoveryService getDiscoveryService ()
 
UmaTokenService getUmaTokenService ()
 
RpService getRpService ()
 
ConfigurationService getConfigurationService ()
 
OxAuthCryptoProvider getCryptoProvider () throws Exception
 
Rp getRp ()
 
ValidationService getValidationService ()
 
Command getCommand ()
 
CommandResponse okResponse (IOpResponse p_data)
 

限定公開メンバ関数

 RsCheckAccessOperation (Command command, final Injector injector)
 

関数

public< T > T getInstance (Class< T > type)
 

非公開メンバ関数

void validate (RsCheckAccessParams params)
 

静的非公開変数類

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

詳解

著者
Yuriy Zabrovarnyy
バージョン
0.9, 31/05/2016

構築子と解体子

◆ RsCheckAccessOperation()

org.xdi.oxd.server.op.RsCheckAccessOperation.RsCheckAccessOperation ( Command  command,
final Injector  injector 
)
inlineprotected

Constructor

引数
commandcommand
42  {
43  super(command, injector, RsCheckAccessParams.class);
44  }
final Injector injector
Definition: BaseOperation.java:38

関数詳解

◆ execute()

CommandResponse org.xdi.oxd.server.op.RsCheckAccessOperation.execute ( final RsCheckAccessParams  params) throws Exception
inline
47  {
49 
50  Rp site = getRp();
51  UmaResource resource = site.umaResource(params.getPath(), params.getHttpMethod());
52  if (resource == null) {
53  final ErrorResponse error = new ErrorResponse("invalid_request");
54  error.setErrorDescription("Resource is not protected with path: " + params.getPath() + " and httpMethod: " + params.getHttpMethod() +
55  ". Please protect your resource first with uma_rs_protect command. Check details on " + ConfigurationService.DOC_URL);
56  LOG.error(error.getErrorDescription());
57  return CommandResponse.error().setData(new POJONode(error));
58  }
59 
60  PatProvider patProvider = new PatProvider() {
61  @Override
62  public String getPatToken() {
63  return getUmaTokenService().getPat(params.getOxdId()).getToken();
64  }
65 
66  @Override
67  public void clearPat() {
68  // do nothing
69  }
70  };
71 
72  CorrectRptIntrospectionResponse status = getIntrospectionService().introspectRpt(params.getOxdId(), params.getRpt());
73 
74  LOG.trace("RPT: " + params.getRpt() + ", status: " + status);
75 
76  if (!Strings.isNullOrEmpty(params.getRpt()) && status != null && status.getActive() && status.getPermissions() != null) {
77  for (CorrectUmaPermission permission : status.getPermissions()) {
78  List<String> requiredScopes = resource.getScopes();
79 
80  if (requiredScopes.isEmpty()) {
81  LOG.trace("Not scopes in resource:" + resource + ", oxdId: " + params.getOxdId());
82  if (!resource.getScopeExpressions().isEmpty() && JsonLogicNodeParser.isNodeValid(resource.getScopeExpressions().get(0))) {
83  requiredScopes = JsonLogicNodeParser.parseNode(resource.getScopeExpressions().get(0)).getData();
84  LOG.trace("Set requiredScope from scope expression.");
85  }
86  }
87 
88  boolean containsAny = !Collections.disjoint(requiredScopes, permission.getScopes());
89 
90  LOG.trace("containsAny: " + containsAny + ", requiredScopes: " + requiredScopes + ", permissionScopes: " + permission.getScopes());
91 
92  if (containsAny) {
93  if ((permission.getResourceId() != null && permission.getResourceId().equals(resource.getId()))) { // normal UMA
94  LOG.debug("RPT has enough permissions, access GRANTED. Path: " + params.getPath() + ", httpMethod:" + params.getHttpMethod() + ", site: " + site);
95  return okResponse(new RsCheckAccessResponse("granted"));
96  }
97  }
98  }
99  }
100 
101  List<String> scopes = resource.getTicketScopes();
102  if (scopes.isEmpty()) {
103  scopes = resource.getScopes();
104  }
105 
106  final RptPreProcessInterceptor rptInterceptor = new RptPreProcessInterceptor(new ResourceRegistrar(patProvider, new ServiceProvider(site.getOpHost())));
107  Response response = null;
108  try {
109  LOG.trace("Try to register ticket, scopes: " + scopes + ", resourceId: " + resource.getId());
110  response = rptInterceptor.registerTicketResponse(scopes, resource.getId());
111  } catch (ClientResponseFailure e) {
112  LOG.debug("Failed to register ticket. Entity: " + e.getResponse().getEntity(String.class) + ", status: " + e.getResponse().getStatus(), e);
113  if (e.getResponse().getStatus() == 400 || e.getResponse().getStatus() == 401) {
114  LOG.debug("Try maybe PAT is lost on AS, force refresh PAT and request ticket again ...");
115  getUmaTokenService().obtainPat(params.getOxdId()); // force to refresh PAT
116  response = rptInterceptor.registerTicketResponse(scopes, resource.getId());
117  } else {
118  throw e;
119  }
120  }
121 
122  RsCheckAccessResponse opResponse = new RsCheckAccessResponse("denied");
123  opResponse.setWwwAuthenticateHeader((String) response.getMetadata().getFirst("WWW-Authenticate"));
124  opResponse.setTicket(((PermissionTicket) response.getEntity()).getTicket());
125  LOG.debug("Access denied for path: " + params.getPath() + " and httpMethod: " + params.getHttpMethod() + ". Ticket is registered: " + opResponse);
126 
127  return okResponse(opResponse);
128  }
static CommandResponse error()
Definition: CommandResponse.java:86
Definition: ErrorResponse.java:18
static final Logger LOG
Definition: RsCheckAccessOperation.java:35
UmaTokenService getUmaTokenService()
Definition: BaseOperation.java:100
CommandResponse okResponse(IOpResponse p_data)
Definition: BaseOperation.java:145
void validate(RsCheckAccessParams params)
Definition: RsCheckAccessOperation.java:130
void setErrorDescription(String errorDescription)
Definition: ErrorResponse.java:61
CorrectRptIntrospectionResponse introspectRpt(String oxdId, String rpt)
Definition: IntrospectionService.java:87
Definition: CommandResponse.java:22
CommandResponse setData(JsonNode p_data)
Definition: CommandResponse.java:64
String getErrorDescription()
Definition: ErrorResponse.java:57
Rp getRp()
Definition: BaseOperation.java:117
final T params
Definition: BaseOperation.java:40
IntrospectionService getIntrospectionService()
Definition: BaseOperation.java:76

◆ getCommand()

Command org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getCommand ( )
inlineinherited

Returns command

戻り値
command
135  {
136  return command;
137  }
final Command command
Definition: BaseOperation.java:37

◆ getConfigurationService()

ConfigurationService org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getConfigurationService ( )
inlineinherited
108  {
109  return getInstance(ConfigurationService.class);
110  }
Definition: ConfigurationService.java:17
public< T > T getInstance(Class< T > type)
Definition: BaseOperation.java:84

◆ getCryptoProvider()

OxAuthCryptoProvider org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getCryptoProvider ( ) throws Exception
inlineinherited
112  {
114  return new OxAuthCryptoProvider(conf.getCryptProviderKeyStorePath(), conf.getCryptProviderKeyStorePassword(), conf.getCryptProviderDnName());
115  }
Definition: OxdServerConfiguration.java:9
ConfigurationService getConfigurationService()
Definition: BaseOperation.java:108
String getCryptProviderDnName()
Definition: OxdServerConfiguration.java:94
String getCryptProviderKeyStorePassword()
Definition: OxdServerConfiguration.java:86
String getCryptProviderKeyStorePath()
Definition: OxdServerConfiguration.java:78
OxdServerConfiguration get()
Definition: ConfigurationService.java:54

◆ getDiscoveryService()

DiscoveryService org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getDiscoveryService ( )
inlineinherited
96  {
97  return getInstance(DiscoveryService.class);
98  }
Definition: DiscoveryService.java:24
public< T > T getInstance(Class< T > type)
Definition: BaseOperation.java:84

◆ getHttpService()

HttpService org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getHttpService ( )
inlineinherited
72  {
73  return getInstance(HttpService.class);
74  }
Definition: HttpService.java:23
public< T > T getInstance(Class< T > type)
Definition: BaseOperation.java:84

◆ getInjector()

Injector org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getInjector ( )
inlineinherited

Gets injector.

戻り値
injector
68  {
69  return injector;
70  }
final Injector injector
Definition: BaseOperation.java:38

◆ getInstance()

public<T> T org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getInstance ( Class< T >  type)
inlinepackageinherited
84  {
85  return injector.getInstance(type);
86  }
final Injector injector
Definition: BaseOperation.java:38

◆ getIntrospectionService()

IntrospectionService org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getIntrospectionService ( )
inlineinherited
76  {
77  return getInstance(IntrospectionService.class);
78  }
Definition: IntrospectionService.java:22
public< T > T getInstance(Class< T > type)
Definition: BaseOperation.java:84

◆ getKeyService()

PublicOpKeyService org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getKeyService ( )
inlineinherited
80  {
81  return getInstance(PublicOpKeyService.class);
82  }
Definition: PublicOpKeyService.java:22
public< T > T getInstance(Class< T > type)
Definition: BaseOperation.java:84

◆ getLicenseService()

LicenseService org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getLicenseService ( )
inlineinherited
92  {
93  return getInstance(LicenseService.class);
94  }
public< T > T getInstance(Class< T > type)
Definition: BaseOperation.java:84

◆ getParameterClass()

Class<T> org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getParameterClass ( )
inlineinherited
55  {
56  return parameterClass;
57  }
final Class< T > parameterClass
Definition: BaseOperation.java:39

◆ getParams()

T org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getParams ( )
inlineinherited
59  {
60  return params;
61  }
final T params
Definition: BaseOperation.java:40

◆ getRp()

Rp org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getRp ( )
inlineinherited
117  {
118  if (params instanceof HasOxdIdParams) {
119  getValidationService().validate((HasOxdIdParams) params);
120  HasOxdIdParams hasOxdId = (HasOxdIdParams) params;
121  return getRpService().getRp(hasOxdId.getOxdId());
122  }
124  }
Definition: ErrorResponseException.java:8
ValidationService getValidationService()
Definition: BaseOperation.java:126
Pair< Rp, Boolean > validate(IParams params)
Definition: ValidationService.java:41
RpService getRpService()
Definition: BaseOperation.java:104
Definition: ErrorResponseCode.java:18
Rp getRp(String oxdId)
Definition: RpService.java:55
final T params
Definition: BaseOperation.java:40
BAD_REQUEST_NO_OXD_ID
Definition: ErrorResponseCode.java:22

◆ getRpService()

RpService org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getRpService ( )
inlineinherited
104  {
105  return getInstance(RpService.class);
106  }
Definition: RpService.java:23
public< T > T getInstance(Class< T > type)
Definition: BaseOperation.java:84

◆ getStateService()

StateService org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getStateService ( )
inlineinherited
88  {
89  return getInstance(StateService.class);
90  }
Definition: StateService.java:19
public< T > T getInstance(Class< T > type)
Definition: BaseOperation.java:84

◆ getUmaTokenService()

UmaTokenService org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getUmaTokenService ( )
inlineinherited
100  {
101  return getInstance(UmaTokenService.class);
102  }
Definition: UmaTokenService.java:42
public< T > T getInstance(Class< T > type)
Definition: BaseOperation.java:84

◆ getValidationService()

ValidationService org.xdi.oxd.server.op.BaseOperation< T extends IParams >.getValidationService ( )
inlineinherited
126  {
127  return getInstance(ValidationService.class);
128  }
Definition: ValidationService.java:19
public< T > T getInstance(Class< T > type)
Definition: BaseOperation.java:84

◆ okResponse()

CommandResponse org.xdi.oxd.server.op.BaseOperation< T extends IParams >.okResponse ( IOpResponse  p_data)
inlineinherited

Ok response for operation

引数
p_dataresponse
戻り値
ok response with data
145  {
146  if (p_data == null) {
147  return CommandResponse.createInternalError();
148  }
149  return CommandResponse.ok().setData(new POJONode(p_data));
150  }

◆ validate()

void org.xdi.oxd.server.op.RsCheckAccessOperation.validate ( RsCheckAccessParams  params)
inlineprivate
130  {
131  if (Strings.isNullOrEmpty(params.getHttpMethod())) {
133  }
134  if (Strings.isNullOrEmpty(params.getPath())) {
136  }
137  }
NO_UMA_HTTP_METHOD
Definition: ErrorResponseCode.java:61
Definition: ErrorResponseException.java:8
NO_UMA_PATH_PARAMETER
Definition: ErrorResponseCode.java:62
Definition: ErrorResponseCode.java:18
final T params
Definition: BaseOperation.java:40

メンバ詳解

◆ LOG

final Logger org.xdi.oxd.server.op.RsCheckAccessOperation.LOG = LoggerFactory.getLogger(RsCheckAccessOperation.class)
staticprivate

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