import javax.ws.rs.core.Response.ResponseBuilder; //导入方法依赖的package包/类
@SuppressWarnings("unchecked")
private Response responseAuthSuccess(final IAccessToken accessToken,
final IRefreshToken refreshToken) {
JSONObject resp = new JSONObject();
resp.put(OAuth2Helper.Key.ACCESS_TOKEN, accessToken.toTokenString());
resp.put(OAuth2Helper.Key.EXPIRES_IN, accessToken.expiresIn());
if (refreshToken != null) {
resp.put(OAuth2Helper.Key.REFRESH_TOKEN,
refreshToken.toTokenString());
resp.put(OAuth2Helper.Key.REFRESH_TOKEN_EXPIRES_IN,
refreshToken.refreshExpiresIn());
}
resp.put(OAuth2Helper.Key.TOKEN_TYPE, OAuth2Helper.Scheme.BEARER);
ResponseBuilder rb = Response.ok()
.type(MediaType.APPLICATION_JSON_TYPE);
if (accessToken.getTarget() != null) {
resp.put(OAuth2Helper.Key.TARGET, accessToken.getTarget());
rb.header(HttpHeaders.LOCATION, accessToken.getTarget() + "__token");
}
if (issueCookie) {
String tokenString = accessToken.toTokenString();
// p_cookie_peerとして、ランダムなUUIDを設定する
String pCookiePeer = UUID.randomUUID().toString();
String cookieValue = pCookiePeer + "\t" + tokenString;
// ヘッダに返却するp_cookie値は、暗号化する
String encodedCookieValue = LocalToken.encode(cookieValue,
UnitLocalUnitUserToken.getIvBytes(AccessContext
.getCookieCryptKey(requestURIInfo.getBaseUri())));
// Cookieのバージョン(0)を指定
int version = 0;
String path = getCookiePath();
// Cookieを作成し、レスポンスヘッダに返却する
Cookie cookie = new Cookie("p_cookie", encodedCookieValue, path,
requestURIInfo.getBaseUri().getHost(), version);
rb.cookie(new NewCookie(cookie, "", -1, PersoniumUnitConfig
.isHttps()));
// レスポンスボディの"p_cookie_peer"を返却する
resp.put("p_cookie_peer", pCookiePeer);
}
return rb.entity(resp.toJSONString()).build();
}