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

org.springframework.security.oauth2.server.authorization.JwtEncodingContext Maven / Gradle / Ivy

There is a newer version: 0.1.2
Show newest version
/*
 * Copyright 2020-2021 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.springframework.security.oauth2.server.authorization;

import java.util.Map;
import java.util.function.Consumer;

import org.springframework.lang.Nullable;
import org.springframework.security.oauth2.core.context.Context;
import org.springframework.security.oauth2.jwt.JoseHeader;
import org.springframework.security.oauth2.jwt.JwtClaimsSet;
import org.springframework.util.Assert;

/**
 * @author Joe Grandja
 * @since 0.1.0
 * @see OAuth2TokenContext
 * @see JoseHeader.Builder
 * @see JwtClaimsSet.Builder
 */
public final class JwtEncodingContext implements OAuth2TokenContext {
	private final Context context;

	private JwtEncodingContext(Map context) {
		this.context = Context.of(context);
	}

	@Nullable
	@Override
	public  V get(Object key) {
		return this.context.get(key);
	}

	@Override
	public boolean hasKey(Object key) {
		return this.context.hasKey(key);
	}

	public JoseHeader.Builder getHeaders() {
		return get(JoseHeader.Builder.class);
	}

	public JwtClaimsSet.Builder getClaims() {
		return get(JwtClaimsSet.Builder.class);
	}

	public static Builder with(JoseHeader.Builder headersBuilder, JwtClaimsSet.Builder claimsBuilder) {
		return new Builder(headersBuilder, claimsBuilder);
	}

	public static final class Builder extends AbstractBuilder {

		private Builder(JoseHeader.Builder headersBuilder, JwtClaimsSet.Builder claimsBuilder) {
			Assert.notNull(headersBuilder, "headersBuilder cannot be null");
			Assert.notNull(claimsBuilder, "claimsBuilder cannot be null");
			put(JoseHeader.Builder.class, headersBuilder);
			put(JwtClaimsSet.Builder.class, claimsBuilder);
		}

		public Builder headers(Consumer headersConsumer) {
			headersConsumer.accept(get(JoseHeader.Builder.class));
			return this;
		}

		public Builder claims(Consumer claimsConsumer) {
			claimsConsumer.accept(get(JwtClaimsSet.Builder.class));
			return this;
		}

		public JwtEncodingContext build() {
			return new JwtEncodingContext(this.context);
		}
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy