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

公開メンバ関数

Map< UmaScriptByScope, UmaAuthorizationContextcheckNeedsInfo (Claims claims, Map< UmaScopeDescription, Boolean > requestedScopes, List< UmaPermission > permissions, UmaPCT pct, HttpServletRequest httpRequest, Client client)
 

静的公開メンバ関数

static Set< String > getScriptDNs (List< UmaScopeDescription > scopes)
 

非公開メンバ関数

String constructGatheringScriptNameValue (String existingValue, String claimsGatheringScriptName)
 
String buildClaimsGatheringRedirectUri (Collection< UmaAuthorizationContext > contexts, Client client, String newTicket)
 

非公開変数類

Logger log
 
AppConfiguration appConfiguration
 
UmaPermissionService permissionService
 
AttributeService attributeService
 
UmaResourceService resourceService
 
ExternalUmaRptPolicyService policyService
 
UmaSessionService sessionService
 
UserService userService
 

詳解

著者
yuriyz on 06/16/2017.

関数詳解

◆ buildClaimsGatheringRedirectUri()

String org.xdi.oxauth.uma.service.UmaNeedsInfoService.buildClaimsGatheringRedirectUri ( Collection< UmaAuthorizationContext contexts,
Client  client,
String  newTicket 
)
inlineprivate
134  {
135  String queryParameters = "";
136 
137  for (UmaAuthorizationContext context : contexts) {
138  queryParameters += context.getRedirectUserParameters().buildQueryString() + "&";
139  }
140  queryParameters = StringUtils.removeEnd(queryParameters, "&");
141 
142  String result = appConfiguration.getBaseEndpoint() + "/uma/gather_claims";
143  if (StringUtils.isNotBlank(queryParameters)) {
144  result += "?" + queryParameters;
145  }
146  result += "&client_id=" + client.getClientId() + "&ticket=" + newTicket;
147  return result;
148  }
AppConfiguration appConfiguration
Definition: UmaNeedsInfoService.java:48
String getBaseEndpoint()
Definition: AppConfiguration.java:328

◆ checkNeedsInfo()

Map<UmaScriptByScope, UmaAuthorizationContext> org.xdi.oxauth.uma.service.UmaNeedsInfoService.checkNeedsInfo ( Claims  claims,
Map< UmaScopeDescription, Boolean >  requestedScopes,
List< UmaPermission permissions,
UmaPCT  pct,
HttpServletRequest  httpRequest,
Client  client 
)
inline
64  {
65 
66  Map<UmaScriptByScope, UmaAuthorizationContext> scriptMap = new HashMap<UmaScriptByScope, UmaAuthorizationContext>();
67  Map<String, String> ticketAttributes = new HashMap<String, String>();
68 
69  List<ClaimDefinition> missedClaims = new ArrayList<ClaimDefinition>();
70 
71  UmaAuthorizationContextBuilder contextBuilder = new UmaAuthorizationContextBuilder(appConfiguration,
72  attributeService, resourceService, permissions, requestedScopes, claims, httpRequest,
74 
75 
76  for (UmaScopeDescription scope : requestedScopes.keySet()) {
77  List<String> authorizationPolicies = scope.getAuthorizationPolicies();
78  if (authorizationPolicies != null && !authorizationPolicies.isEmpty()) {
79  for (String scriptDN : authorizationPolicies) { //log.trace("Loading UMA script: " + scriptDN + ", scope: " + scope + " ...");
80  CustomScriptConfiguration script = policyService.getScriptByDn(scriptDN);
81  if (script != null) {
82  UmaAuthorizationContext context = contextBuilder.build(script);
83  scriptMap.put(new UmaScriptByScope(scope, script), context);
84 
85  List<ClaimDefinition> requiredClaims = policyService.getRequiredClaims(script, context);
86  if (requiredClaims != null && !requiredClaims.isEmpty()) {
87  for (ClaimDefinition definition : requiredClaims) {
88  if (!claims.has(definition.getName())) {
89  missedClaims.add(definition);
90  }
91  }
92  }
93 
94  String claimsGatheringScriptName = policyService.getClaimsGatheringScriptName(script, context);
95  if (StringUtils.isNotBlank(claimsGatheringScriptName)) {
96  ticketAttributes.put(UmaConstants.GATHERING_ID, constructGatheringScriptNameValue(ticketAttributes.get(UmaConstants.GATHERING_ID), claimsGatheringScriptName));
97  } else {
98  if (!UmaConstants.NO_SCRIPT.equalsIgnoreCase(claimsGatheringScriptName)) {
99  log.error("External 'getClaimsGatheringScriptName' script method return null or blank value, script: " + script.getName());
100  }
101  }
102  } else {
103  log.error("Unable to load UMA script dn: '{}'", scriptDN);
104  }
105  }
106  } else {
107  log.trace("No policies defined for scope: " + scope.getId() + ", scopeDn: " + scope.getDn());
108  }
109  }
110 
111  if (!missedClaims.isEmpty()) {
112  ticketAttributes.put(UmaPermission.PCT, pct.getCode());
113  String newTicket = permissionService.changeTicket(permissions, ticketAttributes);
114 
115  UmaNeedInfoResponse needInfoResponse = new UmaNeedInfoResponse();
116  needInfoResponse.setTicket(newTicket);
117  needInfoResponse.setError("need_info");
118  needInfoResponse.setRedirectUser(buildClaimsGatheringRedirectUri(scriptMap.values(), client, newTicket));
119  needInfoResponse.setRequiredClaims(missedClaims);
120 
121  throw new WebApplicationException(Response.status(Response.Status.FORBIDDEN).entity(ServerUtil.asJsonSilently(needInfoResponse)).build());
122  }
123 
124  return scriptMap;
125  }
UmaSessionService sessionService
Definition: UmaNeedsInfoService.java:58
ExternalUmaRptPolicyService policyService
Definition: UmaNeedsInfoService.java:56
String changeTicket(List< UmaPermission > permissions, Map< String, String > attributes)
Definition: UmaPermissionService.java:217
UmaResourceService resourceService
Definition: UmaNeedsInfoService.java:54
Logger log
Definition: UmaNeedsInfoService.java:46
AttributeService attributeService
Definition: UmaNeedsInfoService.java:52
AppConfiguration appConfiguration
Definition: UmaNeedsInfoService.java:48
UmaPermissionService permissionService
Definition: UmaNeedsInfoService.java:50
CustomScriptConfiguration getScriptByDn(String scriptDn)
Definition: ExternalUmaRptPolicyService.java:75
UserService userService
Definition: UmaNeedsInfoService.java:60
String constructGatheringScriptNameValue(String existingValue, String claimsGatheringScriptName)
Definition: UmaNeedsInfoService.java:127
List< ClaimDefinition > getRequiredClaims(CustomScriptConfiguration script, UmaAuthorizationContext context)
Definition: ExternalUmaRptPolicyService.java:107
String buildClaimsGatheringRedirectUri(Collection< UmaAuthorizationContext > contexts, Client client, String newTicket)
Definition: UmaNeedsInfoService.java:134
String getClaimsGatheringScriptName(CustomScriptConfiguration script, UmaAuthorizationContext context)
Definition: ExternalUmaRptPolicyService.java:120

◆ constructGatheringScriptNameValue()

String org.xdi.oxauth.uma.service.UmaNeedsInfoService.constructGatheringScriptNameValue ( String  existingValue,
String  claimsGatheringScriptName 
)
inlineprivate
127  {
128  if (StringUtils.isBlank(existingValue)) {
129  return claimsGatheringScriptName;
130  }
131  return existingValue + " " + claimsGatheringScriptName;
132  }

◆ getScriptDNs()

static Set<String> org.xdi.oxauth.uma.service.UmaNeedsInfoService.getScriptDNs ( List< UmaScopeDescription scopes)
inlinestatic
150  {
151  HashSet<String> result = new HashSet<String>();
152 
153  for (UmaScopeDescription scope : scopes) {
154  List<String> authorizationPolicies = scope.getAuthorizationPolicies();
155  if (authorizationPolicies != null) {
156  result.addAll(authorizationPolicies);
157  }
158  }
159 
160  return result;
161  }

メンバ詳解

◆ appConfiguration

AppConfiguration org.xdi.oxauth.uma.service.UmaNeedsInfoService.appConfiguration
private

◆ attributeService

AttributeService org.xdi.oxauth.uma.service.UmaNeedsInfoService.attributeService
private

◆ log

Logger org.xdi.oxauth.uma.service.UmaNeedsInfoService.log
private

◆ permissionService

UmaPermissionService org.xdi.oxauth.uma.service.UmaNeedsInfoService.permissionService
private

◆ policyService

ExternalUmaRptPolicyService org.xdi.oxauth.uma.service.UmaNeedsInfoService.policyService
private

◆ resourceService

UmaResourceService org.xdi.oxauth.uma.service.UmaNeedsInfoService.resourceService
private

◆ sessionService

UmaSessionService org.xdi.oxauth.uma.service.UmaNeedsInfoService.sessionService
private

◆ userService

UserService org.xdi.oxauth.uma.service.UmaNeedsInfoService.userService
private

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