/*
* 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.usergrid.security.oauth;
import java.util.UUID;
import org.apache.usergrid.security.AuthPrincipalType;
import org.apache.usergrid.utils.UUIDUtils;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
public class ClientCredentialsInfo {
private String id;
private String secret;
/** Needed for Jackson since this class is serialized to the Shiro Cache */
public ClientCredentialsInfo() {}
public ClientCredentialsInfo( String id, String secret ) {
this.id = id;
this.secret = secret;
}
@JsonProperty("client_id")
public String getId() {
return id;
}
@JsonProperty("client_secret")
public String getSecret() {
return secret;
}
public static ClientCredentialsInfo forUuidAndSecret( AuthPrincipalType type, UUID uuid, String secret ) {
return new ClientCredentialsInfo( getClientIdForTypeAndUuid( type, uuid ), secret );
}
public static String getClientIdForTypeAndUuid( AuthPrincipalType type, UUID uuid ) {
return type.getBase64Prefix() + UUIDUtils.toBase64( uuid );
}
@JsonIgnore
public UUID getUUIDFromConsumerKey() {
return getUUIDFromClientId( id );
}
public static UUID getUUIDFromClientId( String key ) {
if ( key == null ) {
return null;
}
if ( key.length() != 26 ) {
return null;
}
return UUIDUtils.fromBase64( key.substring( 4 ) );
}
@JsonIgnore
public AuthPrincipalType getTypeFromClientId() {
return getTypeFromClientId( id );
}
public static AuthPrincipalType getTypeFromClientId( String key ) {
if ( key == null ) {
return null;
}
if ( key.length() != 26 ) {
return null;
}
return AuthPrincipalType.getFromBase64String( key );
}
}