51 UmaResource resource = site.umaResource(
params.getPath(),
params.getHttpMethod());
52 if (resource == null) {
55 ". Please protect your resource first with uma_rs_protect command. Check details on " + ConfigurationService.DOC_URL);
60 PatProvider patProvider =
new PatProvider() {
62 public String getPatToken() {
67 public void clearPat() {
74 LOG.trace(
"RPT: " +
params.getRpt() +
", status: " + status);
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();
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.");
88 boolean containsAny = !Collections.disjoint(requiredScopes, permission.getScopes());
90 LOG.trace(
"containsAny: " + containsAny +
", requiredScopes: " + requiredScopes +
", permissionScopes: " + permission.getScopes());
93 if ((permission.getResourceId() != null && permission.getResourceId().equals(resource.getId()))) {
94 LOG.debug(
"RPT has enough permissions, access GRANTED. Path: " +
params.getPath() +
", httpMethod:" +
params.getHttpMethod() +
", site: " + site);
95 return okResponse(
new RsCheckAccessResponse(
"granted"));
101 List<String> scopes = resource.getTicketScopes();
102 if (scopes.isEmpty()) {
103 scopes = resource.getScopes();
106 final RptPreProcessInterceptor rptInterceptor =
new RptPreProcessInterceptor(
new ResourceRegistrar(patProvider,
new ServiceProvider(site.getOpHost())));
107 Response response = null;
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 ...");
116 response = rptInterceptor.registerTicketResponse(scopes, resource.getId());
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);
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