/**
* 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.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import javax.xml.bind.annotation.XmlRootElement;
import org.apache.cxf.rs.security.oauth2.utils.OAuthUtils;
/**
* This bean represents a resource owner authorization challenge.
* Typically, an HTML view will be returned to a resource owner who
* will authorize or deny the third-party client
*/
@XmlRootElement(name = "authorizationData",
namespace = "http://org.apache.cxf.rs.security.oauth")
public class OAuthAuthorizationData extends OAuthRedirectionState implements Serializable {
private static final long serialVersionUID = -7755998413495017637L;
private String endUserName;
private String authenticityToken;
private String replyTo;
private String applicationName;
private String applicationWebUri;
private String applicationDescription;
private String applicationLogoUri;
private List<String> applicationCertificates = new LinkedList<String>();
private Map<String, String> extraApplicationProperties = new HashMap<>();
private boolean implicitFlow;
private List<OAuthPermission> permissions;
private List<OAuthPermission> alreadyAuthorizedPermissions;
private boolean hidePreauthorizedScopesInForm;
private boolean applicationRegisteredDynamically;
private boolean supportSinglePageApplications;
public OAuthAuthorizationData() {
}
/**
* Get the client application name
* @return application name
*/
public String getApplicationName() {
return applicationName;
}
/**
* Set the client application name
* @param applicationName application name
*/
public void setApplicationName(String applicationName) {
this.applicationName = applicationName;
}
/**
* Get the list of scopes translated to {@link Permission} instances
* requested by the client application
* @return the list of scopes
*/
public List<OAuthPermission> getPermissions() {
return permissions;
}
/**
* Set the list of scopes translated to {@link OAuthPermission} instances
* @return the list of scopes
**/
public void setPermissions(List<OAuthPermission> permissions) {
this.permissions = permissions;
}
/**
* Get the list of scopes already approved by a user
* @return the list of approved scopes
*/
public List<OAuthPermission> getAlreadyAuthorizedPermissions() {
return alreadyAuthorizedPermissions;
}
/**
* Set the list of scopes already approved by a user
* @param permissions the list of approved scopes
*/
public void setAlreadyAuthorizedPermissions(List<OAuthPermission> perms) {
this.alreadyAuthorizedPermissions = perms;
}
/**
* Set the authenticity token linking the authorization
* challenge to the current end user session
*
* @param authenticityToken the session authenticity token
*/
public void setAuthenticityToken(String authenticityToken) {
this.authenticityToken = authenticityToken;
}
/**
* Get the authenticity token linking the authorization
* challenge to the current end user session
* @return the session authenticity token
*/
public String getAuthenticityToken() {
return authenticityToken;
}
/**
* Set the application description
* @param applicationDescription the description
*/
public void setApplicationDescription(String applicationDescription) {
this.applicationDescription = applicationDescription;
}
/**
* Get the application description
* @return the description
*/
public String getApplicationDescription() {
return applicationDescription;
}
/**
* Set the application web URI
* @param applicationWebUri the application URI
*/
public void setApplicationWebUri(String applicationWebUri) {
this.applicationWebUri = applicationWebUri;
}
/**
* Get the application web URI
* @return the application URI
*/
public String getApplicationWebUri() {
return applicationWebUri;
}
/**
* Set the application logo URI
* @param applicationLogoUri the logo URI
*/
public void setApplicationLogoUri(String applicationLogoUri) {
this.applicationLogoUri = applicationLogoUri;
}
/**
* Get the application logo URI
* @return the logo URI
*/
public String getApplicationLogoUri() {
return applicationLogoUri;
}
/**
* Set the absolute URI where the authorization decision data
* will need to be sent to
* @param replyTo authorization decision handler URI
*/
public void setReplyTo(String replyTo) {
this.replyTo = replyTo;
}
/**
* Get the absolute URI where the authorization decision data
* will need to be sent to
* @return authorization decision handler URI
*/
public String getReplyTo() {
return replyTo;
}
public Map<String, String> getExtraApplicationProperties() {
return extraApplicationProperties;
}
public void setExtraApplicationProperties(Map<String, String> extraApplicationProperties) {
this.extraApplicationProperties = extraApplicationProperties;
}
public String getEndUserName() {
return endUserName;
}
public void setEndUserName(String endUserName) {
this.endUserName = endUserName;
}
public List<String> getApplicationCertificates() {
return applicationCertificates;
}
public void setApplicationCertificates(List<String> applicationCertificates) {
this.applicationCertificates = applicationCertificates;
}
public boolean isImplicitFlow() {
return implicitFlow;
}
public void setImplicitFlow(boolean implicitFlow) {
this.implicitFlow = implicitFlow;
}
public boolean isHidePreauthorizedScopesInForm() {
return hidePreauthorizedScopesInForm;
}
public void setHidePreauthorizedScopesInForm(boolean hidePreauthorizedScopesInForm) {
this.hidePreauthorizedScopesInForm = hidePreauthorizedScopesInForm;
}
public List<String> getPermissionsAsStrings() {
return permissions != null ? OAuthUtils.convertPermissionsToScopeList(permissions)
: Collections.emptyList();
}
public List<String> getAlreadyAuthorizedPermissionsAsStrings() {
return alreadyAuthorizedPermissions != null
? OAuthUtils.convertPermissionsToScopeList(alreadyAuthorizedPermissions)
: Collections.emptyList();
}
public List<OAuthPermission> getAllPermissions() {
List<OAuthPermission> allPerms = new LinkedList<OAuthPermission>();
if (alreadyAuthorizedPermissions != null) {
allPerms.addAll(alreadyAuthorizedPermissions);
if (permissions != null) {
List<String> list = getAlreadyAuthorizedPermissionsAsStrings();
for (OAuthPermission perm : permissions) {
if (!list.contains(perm.getPermission())) {
allPerms.add(perm);
}
}
}
} else if (permissions != null) {
allPerms.addAll(permissions);
}
return allPerms;
}
public boolean isApplicationRegisteredDynamically() {
return applicationRegisteredDynamically;
}
public void setApplicationRegisteredDynamically(boolean applicationRegisteredDynamically) {
this.applicationRegisteredDynamically = applicationRegisteredDynamically;
}
public boolean isSupportSinglePageApplications() {
return supportSinglePageApplications;
}
public void setSupportSinglePageApplications(boolean supportSinglePageApplications) {
this.supportSinglePageApplications = supportSinglePageApplications;
}
}