| | |
| | | throw new CASValidationException(CASErrorCode.INVALID_SERVICE, "Ticket was not issued for this service", Response.Status.BAD_REQUEST); |
| | | } |
| | | |
| | | clientSession.setNote(CASLoginProtocol.SESSION_TICKET, ticket); |
| | | |
| | | if (requireReauth && AuthenticationManager.isSSOAuthentication(clientSession)) { |
| | | event.error(Errors.SESSION_EXPIRED); |
| | | throw new CASValidationException(CASErrorCode.INVALID_TICKET, "Interactive authentication was requested but not performed", Response.Status.BAD_REQUEST); |
| | |
| | | throw new CASValidationException(CASErrorCode.INVALID_TICKET, "Session not active", Response.Status.BAD_REQUEST); |
| | | } |
| | | |
| | | // Single logout refers to the service ticket the client session was established with |
| | | if (prefix.equals(CASLoginProtocol.SERVICE_TICKET_PREFIX)) { |
| | | clientSession.setNote(CASLoginProtocol.SESSION_TICKET, ticket); |
| | | } |
| | | } |
| | | |
| | | protected void createProxyGrant(String pgtUrl) { |
| | |
| | | { |
| | | String key = UUID.randomUUID().toString(); |
| | | UserSessionModel userSession = clientSession.getUserSession(); |
| | | OAuth2Code codeData = new OAuth2Code(key, clientSession.getClient().getId(), Time.currentTime() + userSession.getRealm().getAccessCodeLifespan(), null, null, null, redirectUriParam, null, null, null, userSession.getId()); |
| | | OAuth2Code codeData = new OAuth2Code(key, clientSession.getClient().getId(), Time.currentTime() + userSession.getRealm().getAccessCodeLifespan(), null, null, null, redirectUriParam, null, null, null, userSession.getId(), userSession.getUser().getId()); |
| | | session.singleUseObjects().put(prefix + key, clientSession.getUserSession().getRealm().getAccessCodeLifespan(), codeData.serializeCode()); |
| | | return prefix + key + "--" + hexEncode(clientSession.getUserSession().getId()) + "--" + clientSession.getClient().getId(); |
| | | } |
| | |
| | | } |
| | | |
| | | private String hexDecode(String hex) { |
| | | byte[] bytes = HexFormat.of().parseHex(hex); |
| | | return new String(bytes, StandardCharsets.US_ASCII); |
| | | try { |
| | | byte[] bytes = HexFormat.of().parseHex(hex); |
| | | return new String(bytes, StandardCharsets.US_ASCII); |
| | | } catch (IllegalArgumentException e) { |
| | | event.error(Errors.INVALID_CODE); |
| | | throw new CASValidationException(CASErrorCode.INVALID_TICKET_SPEC, "Invalid format of the code", Response.Status.BAD_REQUEST); |
| | | } |
| | | } |
| | | } |