mitreid-connect
静的公開変数類 | 限定公開メンバ関数 | 限定公開変数類 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.mitre.openid.connect.view.UserInfoView クラス
org.mitre.openid.connect.view.UserInfoView の継承関係図
Inheritance graph
org.mitre.openid.connect.view.UserInfoView 連携図
Collaboration graph

静的公開変数類

static final String REQUESTED_CLAIMS = "requestedClaims"
 
static final String AUTHORIZED_CLAIMS = "authorizedClaims"
 
static final String SCOPE = "scope"
 
static final String USER_INFO = "userInfo"
 
static final String VIEWNAME = "userInfoView"
 

限定公開メンバ関数

void renderMergedOutputModel (Map< String, Object > model, HttpServletRequest request, HttpServletResponse response)
 
void writeOut (JsonObject json, Map< String, Object > model, HttpServletRequest request, HttpServletResponse response)
 

限定公開変数類

Gson gson
 

非公開メンバ関数

JsonObject toJsonFromRequestObj (UserInfo ui, Set< String > scope, JsonObject authorizedClaims, JsonObject requestedClaims)
 
Set< String > extractUserInfoClaimsIntoSet (JsonObject claims)
 

非公開変数類

ScopeClaimTranslationService translator
 

静的非公開変数類

static JsonParser jsonParser = new JsonParser()
 
static final Logger logger = LoggerFactory.getLogger(UserInfoView.class)
 

詳解

関数詳解

◆ extractUserInfoClaimsIntoSet()

Set<String> org.mitre.openid.connect.view.UserInfoView.extractUserInfoClaimsIntoSet ( JsonObject  claims)
inlineprivate

Pull the claims that have been targeted into a set for processing. Returns an empty set if the input is null.

引数
claimsthe claims request to process
177  {
178  Set<String> target = new HashSet<>();
179  if (claims != null) {
180  JsonObject userinfoAuthorized = claims.getAsJsonObject("userinfo");
181  if (userinfoAuthorized != null) {
182  for (Entry<String, JsonElement> entry : userinfoAuthorized.entrySet()) {
183  target.add(entry.getKey());
184  }
185  }
186  }
187  return target;
188  }

◆ renderMergedOutputModel()

void org.mitre.openid.connect.view.UserInfoView.renderMergedOutputModel ( Map< String, Object >  model,
HttpServletRequest  request,
HttpServletResponse  response 
)
inlineprotected
96  {
97 
98  UserInfo userInfo = (UserInfo) model.get(USER_INFO);
99 
100  Set<String> scope = (Set<String>) model.get(SCOPE);
101 
102  response.setContentType(MediaType.APPLICATION_JSON_VALUE);
103  response.setCharacterEncoding("UTF-8");
104 
105 
106  JsonObject authorizedClaims = null;
107  JsonObject requestedClaims = null;
108  if (model.get(AUTHORIZED_CLAIMS) != null) {
109  authorizedClaims = jsonParser.parse((String) model.get(AUTHORIZED_CLAIMS)).getAsJsonObject();
110  }
111  if (model.get(REQUESTED_CLAIMS) != null) {
112  requestedClaims = jsonParser.parse((String) model.get(REQUESTED_CLAIMS)).getAsJsonObject();
113  }
114  JsonObject json = toJsonFromRequestObj(userInfo, scope, authorizedClaims, requestedClaims);
115 
116  writeOut(json, model, request, response);
117  }
static JsonParser jsonParser
Definition: UserInfoView.java:58
static final String SCOPE
Definition: UserInfoView.java:53
JsonObject toJsonFromRequestObj(UserInfo ui, Set< String > scope, JsonObject authorizedClaims, JsonObject requestedClaims)
Definition: UserInfoView.java:143
static final String USER_INFO
Definition: UserInfoView.java:54
static final String AUTHORIZED_CLAIMS
Definition: UserInfoView.java:52
static final String REQUESTED_CLAIMS
Definition: UserInfoView.java:51
void writeOut(JsonObject json, Map< String, Object > model, HttpServletRequest request, HttpServletResponse response)
Definition: UserInfoView.java:119

◆ toJsonFromRequestObj()

JsonObject org.mitre.openid.connect.view.UserInfoView.toJsonFromRequestObj ( UserInfo  ui,
Set< String >  scope,
JsonObject  authorizedClaims,
JsonObject  requestedClaims 
)
inlineprivate

Build a JSON response according to the request object received.

Claims requested in requestObj.userinfo.claims are added to any claims corresponding to requested scopes, if any.

引数
uithe UserInfo to filter
scopethe allowed scopes to filter by
authorizedClaimsthe claims authorized by the client or user
requestedClaimsthe claims requested in the RequestObject
戻り値
the filtered JsonObject result
143  {
144 
145  // get the base object
146  JsonObject obj = ui.toJson();
147 
148  Set<String> allowedByScope = translator.getClaimsForScopeSet(scope);
149  Set<String> authorizedByClaims = extractUserInfoClaimsIntoSet(authorizedClaims);
150  Set<String> requestedByClaims = extractUserInfoClaimsIntoSet(requestedClaims);
151 
152  // Filter claims by performing a manual intersection of claims that are allowed by the given scope, requested, and authorized.
153  // We cannot use Sets.intersection() or similar because Entry<> objects will evaluate to being unequal if their values are
154  // different, whereas we are only interested in matching the Entry<>'s key values.
155  JsonObject result = new JsonObject();
156  for (Entry<String, JsonElement> entry : obj.entrySet()) {
157 
158  if (allowedByScope.contains(entry.getKey())
159  || authorizedByClaims.contains(entry.getKey())) {
160  // it's allowed either by scope or by the authorized claims (either way is fine with us)
161 
162  if (requestedByClaims.isEmpty() || requestedByClaims.contains(entry.getKey())) {
163  // the requested claims are empty (so we allow all), or they're not empty and this claim was specifically asked for
164  result.add(entry.getKey(), entry.getValue());
165  } // otherwise there were specific claims requested and this wasn't one of them
166  }
167  }
168 
169  return result;
170  }
ScopeClaimTranslationService translator
Definition: UserInfoView.java:66
Set< String > getClaimsForScopeSet(Set< String > scopes)
Set< String > extractUserInfoClaimsIntoSet(JsonObject claims)
Definition: UserInfoView.java:177

◆ writeOut()

void org.mitre.openid.connect.view.UserInfoView.writeOut ( JsonObject  json,
Map< String, Object >  model,
HttpServletRequest  request,
HttpServletResponse  response 
)
inlineprotected
119  {
120  try {
121  Writer out = response.getWriter();
122  gson.toJson(json, out);
123  } catch (IOException e) {
124 
125  logger.error("IOException in UserInfoView.java: ", e);
126 
127  }
128 
129  }
static final Logger logger
Definition: UserInfoView.java:63
Gson gson
Definition: UserInfoView.java:68

メンバ詳解

◆ AUTHORIZED_CLAIMS

final String org.mitre.openid.connect.view.UserInfoView.AUTHORIZED_CLAIMS = "authorizedClaims"
static

◆ gson

Gson org.mitre.openid.connect.view.UserInfoView.gson
protected
初期値:
= new GsonBuilder().setExclusionStrategies(new ExclusionStrategy() {
@Override
public boolean shouldSkipField(FieldAttributes f) {
return false;
}
@Override
public boolean shouldSkipClass(Class<?> clazz) {
if (clazz.equals(BeanPropertyBindingResult.class)) {
return true;
}
return false;
}
}).create()

◆ jsonParser

JsonParser org.mitre.openid.connect.view.UserInfoView.jsonParser = new JsonParser()
staticprivate

◆ logger

final Logger org.mitre.openid.connect.view.UserInfoView.logger = LoggerFactory.getLogger(UserInfoView.class)
staticprivate

Logger for this class

◆ REQUESTED_CLAIMS

final String org.mitre.openid.connect.view.UserInfoView.REQUESTED_CLAIMS = "requestedClaims"
static

◆ SCOPE

final String org.mitre.openid.connect.view.UserInfoView.SCOPE = "scope"
static

◆ translator

ScopeClaimTranslationService org.mitre.openid.connect.view.UserInfoView.translator
private

◆ USER_INFO

final String org.mitre.openid.connect.view.UserInfoView.USER_INFO = "userInfo"
static

◆ VIEWNAME

final String org.mitre.openid.connect.view.UserInfoView.VIEWNAME = "userInfoView"
static

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