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

com.peterphi.std.guice.web.rest.auth.userprovider.JWTUserProvider Maven / Gradle / Ivy

There is a newer version: 10.1.5
Show newest version
package com.peterphi.std.guice.web.rest.auth.userprovider;

import com.auth0.jwt.JWTVerifier;
import com.google.inject.Provider;
import com.peterphi.std.guice.common.auth.iface.CurrentUser;
import com.peterphi.std.guice.web.HttpCallContext;

class JWTUserProvider implements Provider
{
	private final String headerName;
	private final String cookieName;
	private final boolean requireSecure;

	private final JWTVerifier verifier;


	public JWTUserProvider(final String headerName,
	                       final String cookieName,
	                       final String secret,
	                       final String issuer,
	                       final String audience,
	                       final boolean requireSecure)
	{
		this.headerName = headerName;
		this.cookieName = cookieName;
		this.requireSecure = requireSecure;

		if (secret != null)
			this.verifier = new JWTVerifier(secret, issuer, audience);
		else
			this.verifier = null;
	}


	@Override
	public CurrentUser get()
	{
		if (HttpCallContext.peek() == null)
			return null; // Not an HTTP call

		if (verifier != null)
		{
			// Only use JWT if there's a verifier and if the HTTP request includes a JWT
			HttpCallJWTUser user = new HttpCallJWTUser(headerName, cookieName, requireSecure, verifier);

			if (user.hasToken())
				return user;
			else
				return null;
		}
		else
			return null; // No JWT Verifier available
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy