All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.cloudfoundry.identity.uaa.zone.TokenPolicy Maven / Gradle / Ivy

There is a newer version: 4.30.0
Show newest version
/*******************************************************************************
 * Cloud Foundry
 * Copyright (c) [2009-2015] Pivotal Software, Inc. All Rights Reserved.
 * 

* This product is licensed to you under the Apache License, Version 2.0 (the "License"). * You may not use this product except in compliance with the License. *

* This product includes a number of subcomponents with * separate copyright notices and license terms. Your use of these * subcomponents is subject to the terms and conditions of the * subcomponent's license, as noted in the LICENSE file. *******************************************************************************/ package org.cloudfoundry.identity.uaa.zone; import com.fasterxml.jackson.annotation.*; import org.cloudfoundry.identity.uaa.oauth.token.TokenConstants; import org.springframework.util.StringUtils; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collector; import java.util.stream.Collectors; import static org.cloudfoundry.identity.uaa.oauth.token.TokenConstants.TokenFormat.JWT; @JsonIgnoreProperties(ignoreUnknown = true) public class TokenPolicy { private static final Collector, ?, ? extends Map> outputCollector = Collectors.toMap(e -> e.getKey(), e -> { KeyInformation keyInformation = new KeyInformation(); keyInformation.setSigningKey(e.getValue()); return keyInformation; }); private static final Collector, ?, ? extends Map> inputCollector = Collectors.toMap(e -> e.getKey(), e -> e.getValue().getSigningKey()); private int accessTokenValidity; private int refreshTokenValidity; private boolean jwtRevocable = false; private boolean refreshTokenUnique = false; private String refreshTokenFormat = JWT.getStringValue(); @JsonGetter("keys") @JsonInclude(JsonInclude.Include.NON_NULL) private Map getKeysLegacy() { Map keys = getKeys(); return (keys == null || keys.isEmpty()) ? null : keys.entrySet().stream().collect(outputCollector); } @JsonSetter("keys") private void setKeysLegacy(Map keys) { setKeys(keys == null ? null : keys.entrySet().stream().collect(inputCollector)); } private Map keys; private String activeKeyId; public TokenPolicy() { accessTokenValidity = refreshTokenValidity = -1; } public TokenPolicy(int accessTokenValidity, int refreshTokenValidity) { this.accessTokenValidity = accessTokenValidity; this.refreshTokenValidity = refreshTokenValidity; } public TokenPolicy(int accessTokenValidity, int refreshTokenValidity, Map> signingKeysMap) { this(accessTokenValidity, refreshTokenValidity); setKeysLegacy(signingKeysMap.entrySet().stream().collect(Collectors.toMap(e -> e.getKey(), e -> { KeyInformation keyInformation = new KeyInformation(); keyInformation.setSigningKey(e.getValue().get("signingKey")); return keyInformation; }))); } public int getAccessTokenValidity() { return accessTokenValidity; } public void setAccessTokenValidity(int accessTokenValidity) { this.accessTokenValidity = accessTokenValidity; } public int getRefreshTokenValidity() { return refreshTokenValidity; } public void setRefreshTokenValidity(int refreshTokenValidity) { this.refreshTokenValidity = refreshTokenValidity; } @JsonIgnore public Map getKeys() { return this.keys == null ? Collections.EMPTY_MAP : new HashMap<>(this.keys); } @JsonIgnore public void setKeys(Map keys) { if (keys != null) { keys.entrySet().stream().forEach(e -> { if (!StringUtils.hasText(e.getValue()) || !StringUtils.hasText(e.getKey())) { throw new IllegalArgumentException("KeyId and Signing key should not be null or empty"); } }); } this.keys = keys == null ? null : new HashMap<>(keys); } public boolean isRefreshTokenUnique() { return refreshTokenUnique; } public void setRefreshTokenUnique(boolean refreshTokenUnique) { this.refreshTokenUnique = refreshTokenUnique; } public String getRefreshTokenFormat() { return refreshTokenFormat; } public void setRefreshTokenFormat(String refreshTokenFormat) { if(TokenConstants.TokenFormat.fromStringValue(refreshTokenFormat) == null) { List validFormats = TokenConstants.TokenFormat.getStringValues(); String message = String.format("Invalid refresh token format %s. Acceptable values are: %s", refreshTokenFormat, validFormats.toString()); throw new IllegalArgumentException(message); } this.refreshTokenFormat = refreshTokenFormat.toLowerCase(); } @JsonIgnoreProperties(ignoreUnknown = true) private static class KeyInformation { private String signingKey; public String getSigningKey() { return signingKey; } public void setSigningKey(String signingKey) { this.signingKey = signingKey; } } public String getActiveKeyId() { return activeKeyId; } public void setActiveKeyId(String activeKeyId) { this.activeKeyId = activeKeyId; } public boolean isJwtRevocable() { return jwtRevocable; } public void setJwtRevocable(boolean jwtRevocable) { this.jwtRevocable = jwtRevocable; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy