/** * Copyright © 2016-2017 The Thingsboard 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 * * http://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.thingsboard.server.service.security.auth; import org.springframework.security.authentication.AbstractAuthenticationToken; import org.thingsboard.server.service.security.model.SecurityUser; import org.thingsboard.server.service.security.model.token.RawAccessJwtToken; public abstract class AbstractJwtAuthenticationToken extends AbstractAuthenticationToken { private static final long serialVersionUID = -6212297506742428406L; private RawAccessJwtToken rawAccessToken; private SecurityUser securityUser; public AbstractJwtAuthenticationToken(RawAccessJwtToken unsafeToken) { super(null); this.rawAccessToken = unsafeToken; this.setAuthenticated(false); } public AbstractJwtAuthenticationToken(SecurityUser securityUser) { super(securityUser.getAuthorities()); this.eraseCredentials(); this.securityUser = securityUser; super.setAuthenticated(true); } @Override public void setAuthenticated(boolean authenticated) { if (authenticated) { throw new IllegalArgumentException( "Cannot set this token to trusted - use constructor which takes a GrantedAuthority list instead"); } super.setAuthenticated(false); } @Override public Object getCredentials() { return rawAccessToken; } @Override public Object getPrincipal() { return this.securityUser; } @Override public void eraseCredentials() { super.eraseCredentials(); this.rawAccessToken = null; } }