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

静的公開変数類

static final String CLIENT = "client"
 
static final String VIEWNAME = "userInfoJwtView"
 
static final String JOSE_MEDIA_TYPE_VALUE = "application/jwt"
 
static final MediaType JOSE_MEDIA_TYPE = new MediaType("application", "jwt")
 
static final String REQUESTED_CLAIMS = "requestedClaims"
 
static final String AUTHORIZED_CLAIMS = "authorizedClaims"
 
static final String SCOPE = "scope"
 
static final String USER_INFO = "userInfo"
 

限定公開メンバ関数

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

限定公開変数類

Gson gson
 

非公開変数類

JWTSigningAndValidationService jwtService
 
ConfigurationPropertiesBean config
 
ClientKeyCacheService encrypters
 
SymmetricKeyJWTValidatorCacheService symmetricCacheService
 

静的非公開変数類

static final Logger logger = LoggerFactory.getLogger(UserInfoJWTView.class)
 

詳解

著者
jricher

関数詳解

◆ renderMergedOutputModel()

void org.mitre.openid.connect.view.UserInfoView.renderMergedOutputModel ( Map< String, Object >  model,
HttpServletRequest  request,
HttpServletResponse  response 
)
inlineprotectedinherited
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

◆ writeOut()

void org.mitre.openid.connect.view.UserInfoJWTView.writeOut ( JsonObject  json,
Map< String, Object >  model,
HttpServletRequest  request,
HttpServletResponse  response 
)
inlineprotected
89  {
90 
91  try {
92  ClientDetailsEntity client = (ClientDetailsEntity)model.get(CLIENT);
93 
94  // use the parser to import the user claims into the object
95  StringWriter writer = new StringWriter();
96  gson.toJson(json, writer);
97 
98  response.setContentType(JOSE_MEDIA_TYPE_VALUE);
99 
100  JWTClaimsSet claims = new JWTClaimsSet.Builder(JWTClaimsSet.parse(writer.toString()))
101  .audience(Lists.newArrayList(client.getClientId()))
102  .issuer(config.getIssuer())
103  .issueTime(new Date())
104  .jwtID(UUID.randomUUID().toString()) // set a random NONCE in the middle of it
105  .build();
106 
107 
108  if (client.getUserInfoEncryptedResponseAlg() != null && !client.getUserInfoEncryptedResponseAlg().equals(Algorithm.NONE)
109  && client.getUserInfoEncryptedResponseEnc() != null && !client.getUserInfoEncryptedResponseEnc().equals(Algorithm.NONE)
110  && (!Strings.isNullOrEmpty(client.getJwksUri()) || client.getJwks() != null)) {
111 
112  // encrypt it to the client's key
113 
114  JWTEncryptionAndDecryptionService encrypter = encrypters.getEncrypter(client);
115 
116  if (encrypter != null) {
117 
118  EncryptedJWT encrypted = new EncryptedJWT(new JWEHeader(client.getUserInfoEncryptedResponseAlg(), client.getUserInfoEncryptedResponseEnc()), claims);
119 
120  encrypter.encryptJwt(encrypted);
121 
122 
123  Writer out = response.getWriter();
124  out.write(encrypted.serialize());
125 
126  } else {
127  logger.error("Couldn't find encrypter for client: " + client.getClientId());
128  }
129  } else {
130 
131  JWSAlgorithm signingAlg = jwtService.getDefaultSigningAlgorithm(); // default to the server's preference
132  if (client.getUserInfoSignedResponseAlg() != null) {
133  signingAlg = client.getUserInfoSignedResponseAlg(); // override with the client's preference if available
134  }
135  JWSHeader header = new JWSHeader(signingAlg, null, null, null, null, null, null, null, null, null,
137  null, null);
138  SignedJWT signed = new SignedJWT(header, claims);
139 
140  if (signingAlg.equals(JWSAlgorithm.HS256)
141  || signingAlg.equals(JWSAlgorithm.HS384)
142  || signingAlg.equals(JWSAlgorithm.HS512)) {
143 
144  // sign it with the client's secret
145  JWTSigningAndValidationService signer = symmetricCacheService.getSymmetricValidtor(client);
146  signer.signJwt(signed);
147 
148  } else {
149  // sign it with the server's key
150  jwtService.signJwt(signed);
151  }
152 
153  Writer out = response.getWriter();
154  out.write(signed.serialize());
155  }
156  } catch (IOException e) {
157  logger.error("IO Exception in UserInfoJwtView", e);
158  } catch (ParseException e) {
159  // TODO Auto-generated catch block
160  e.printStackTrace();
161  }
162 
163  }
ConfigurationPropertiesBean config
Definition: UserInfoJWTView.java:79
JWTEncryptionAndDecryptionService getEncrypter(ClientDetailsEntity client)
Definition: ClientKeyCacheService.java:118
static final String CLIENT
Definition: UserInfoJWTView.java:62
ClientKeyCacheService encrypters
Definition: UserInfoJWTView.java:82
JWTSigningAndValidationService getSymmetricValidtor(ClientDetailsEntity client)
Definition: SymmetricKeyJWTValidatorCacheService.java:72
Gson gson
Definition: UserInfoView.java:68
static final Logger logger
Definition: UserInfoJWTView.java:67
SymmetricKeyJWTValidatorCacheService symmetricCacheService
Definition: UserInfoJWTView.java:85
JWTSigningAndValidationService jwtService
Definition: UserInfoJWTView.java:76
String getIssuer()
Definition: ConfigurationPropertiesBean.java:100
static final String JOSE_MEDIA_TYPE_VALUE
Definition: UserInfoJWTView.java:71

メンバ詳解

◆ AUTHORIZED_CLAIMS

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

◆ CLIENT

final String org.mitre.openid.connect.view.UserInfoJWTView.CLIENT = "client"
static

◆ config

ConfigurationPropertiesBean org.mitre.openid.connect.view.UserInfoJWTView.config
private

◆ encrypters

ClientKeyCacheService org.mitre.openid.connect.view.UserInfoJWTView.encrypters
private

◆ gson

Gson org.mitre.openid.connect.view.UserInfoView.gson
protectedinherited
初期値:
= 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()

◆ JOSE_MEDIA_TYPE

final MediaType org.mitre.openid.connect.view.UserInfoJWTView.JOSE_MEDIA_TYPE = new MediaType("application", "jwt")
static

◆ JOSE_MEDIA_TYPE_VALUE

final String org.mitre.openid.connect.view.UserInfoJWTView.JOSE_MEDIA_TYPE_VALUE = "application/jwt"
static

◆ jwtService

JWTSigningAndValidationService org.mitre.openid.connect.view.UserInfoJWTView.jwtService
private

◆ logger

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

Logger for this class

◆ REQUESTED_CLAIMS

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

◆ SCOPE

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

◆ symmetricCacheService

SymmetricKeyJWTValidatorCacheService org.mitre.openid.connect.view.UserInfoJWTView.symmetricCacheService
private

◆ USER_INFO

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

◆ VIEWNAME

final String org.mitre.openid.connect.view.UserInfoJWTView.VIEWNAME = "userInfoJwtView"
static

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