/* * JBoss, a division of Red Hat * Copyright 2013, Red Hat Middleware, LLC, and individual * contributors as indicated by the @authors tag. See the * copyright.txt in the distribution for a full listing of * individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.gatein.security.oauth.spi; import org.gatein.security.oauth.common.OAuthConstants; import org.gatein.security.oauth.utils.OAuthUtils; /** * Encapsulate data about single OAuth provider (social network), which are needed by portal (not data, which are needed to perform specific OAuth * operations like consumerKey or consumerSecret as these are provided by concrete {@link org.gatein.security.oauth.spi.OAuthProviderProcessor}) * * @author <a href="mailto:mposolda@redhat.com">Marek Posolda</a> */ public class OAuthProviderType<T extends AccessTokenContext> { // Key of particular provider (for example 'FACEBOOK') private final String key; // Whether this OAuth provider should be enabled or not private final boolean enabled; // Name of UserProfile attribute, which will be used to save OAuth userName (userName of user in given social network) private final String userNameAttrName; // Reference to OAuthProviderProcessor for this OAuth Provider. Processor can be used to call OAuth operations on given OAuth provider private final OAuthProviderProcessor<T> oauthProviderProcessor; private final OAuthPrincipalProcessor oauthPrincipalProcessor; // URL suffix used to start OAuth authentication workflow with given OAuth provider private final String initOAuthURL; // Friendly name of given OAuth provider (For example 'Facebook') private final String friendlyName; public OAuthProviderType(String key, boolean enabled, String userNameAttrName, OAuthProviderProcessor<T> oauthProviderProcessor, OAuthPrincipalProcessor principalProcessor, String initOAuthURL, String friendlyName) { this.key = key; this.enabled = enabled; this.userNameAttrName = userNameAttrName; this.oauthProviderProcessor = oauthProviderProcessor; this.oauthPrincipalProcessor = principalProcessor; this.initOAuthURL = initOAuthURL; this.friendlyName = friendlyName; } public String getKey() { return key; } public boolean isEnabled() { return enabled; } public String getUserNameAttrName() { return userNameAttrName; } public OAuthProviderProcessor<T> getOauthProviderProcessor() { return oauthProviderProcessor; } public OAuthPrincipalProcessor getOauthPrincipalProcessor() { return this.oauthPrincipalProcessor; } public String getInitOAuthURL(String contextPath, String requestURI) { requestURI = OAuthUtils.encodeParam(requestURI); return contextPath + initOAuthURL + "?" + OAuthConstants.PARAM_OAUTH_INTERACTION + "=" + OAuthConstants.PARAM_OAUTH_INTERACTION_VALUE_START + "&" + OAuthConstants.PARAM_INITIAL_URI + "=" + requestURI; } public String getFriendlyName() { return friendlyName; } @Override public String toString() { return new StringBuilder("OAuthProviderType [ ") .append("key=" + key) .append(", enabled=" + enabled) .append(", userNameAttrName=" + userNameAttrName) .append(", oauthProviderProcessor=" + oauthProviderProcessor) .append(", oauthPrincipalProcessor=" + oauthPrincipalProcessor) .append(", initOAuthURL=" + initOAuthURL) .append(", friendlyName=" + friendlyName) .append(" ]").toString(); } }