/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.cxf.rs.security.oauth2.common;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* Captures the information about the current client request
* which custom filters may use to further protect the endpoints
*/
public class OAuthContext {
private UserSubject resourceOwnerSubject;
private UserSubject clientSubject;
private List<OAuthPermission> tokenPermissions;
private String tokenGrantType;
private String clientId;
private boolean isClientConfidential;
private String tokenKey;
private String tokenAudience;
private String tokenIssuer;
private String[] tokenRequestParts;
private Map<String, String> tokenExtraProperties = new LinkedHashMap<String, String>();
public OAuthContext(UserSubject resourceOwnerSubject,
UserSubject clientSubject,
List<OAuthPermission> perms,
String tokenGrantType) {
this.resourceOwnerSubject = resourceOwnerSubject;
this.clientSubject = clientSubject;
this.tokenPermissions = perms;
this.tokenGrantType = tokenGrantType;
}
/**
* Gets the {@link UserSubject} representing the resource owner
* @return the subject
*/
public UserSubject getSubject() {
return resourceOwnerSubject;
}
/**
* Gets the {@link UserSubject} representing the client
* @return the subject
*/
public UserSubject getClientSubject() {
return clientSubject;
}
/**
* Gets the list of the permissions assigned to the current access token
* @return the permissions
*/
public List<OAuthPermission> getPermissions() {
return Collections.unmodifiableList(tokenPermissions);
}
/**
* Returns the grant type which was used to obtain the access token
* the client is using now during the current request
* @return the grant type
*/
public String getTokenGrantType() {
return tokenGrantType;
}
/**
* Returns the client which obtained the access token
* @return the client id
*/
public String getClientId() {
return clientId;
}
/**
* Sets the client which obtained the access token
* @param clientId
*/
public void setClientId(String clientId) {
this.clientId = clientId;
}
/**
* Returns the access token the client is using now during the current request
* @return the token
*/
public String getTokenKey() {
return tokenKey;
}
/**
* Sets the access token the client is using now during the current request
* @param tokenKey
*/
public void setTokenKey(String tokenKey) {
this.tokenKey = tokenKey;
}
public String getTokenAudience() {
return tokenAudience;
}
public void setTokenAudience(String audience) {
this.tokenAudience = audience;
}
public String[] getTokenRequestParts() {
return tokenRequestParts;
}
public void setTokenRequestParts(String[] tokenRequestParts) {
this.tokenRequestParts = tokenRequestParts;
}
public boolean isClientConfidential() {
return isClientConfidential;
}
public void setClientConfidential(boolean isConfidential) {
this.isClientConfidential = isConfidential;
}
public String getTokenIssuer() {
return tokenIssuer;
}
public void setTokenIssuer(String tokenIssuer) {
this.tokenIssuer = tokenIssuer;
}
public Map<String, String> getTokenExtraProperties() {
return tokenExtraProperties;
}
public void setTokenExtraProperties(Map<String, String> tokenExtraProperties) {
this.tokenExtraProperties = tokenExtraProperties;
}
}