103928aee4356845252ac6b662d5c72c29903813eJake Slack// 203928aee4356845252ac6b662d5c72c29903813eJake Slack// ======================================================================== 303928aee4356845252ac6b662d5c72c29903813eJake Slack// Copyright (c) 1995-2014 Mort Bay Consulting Pty. Ltd. 403928aee4356845252ac6b662d5c72c29903813eJake Slack// ------------------------------------------------------------------------ 503928aee4356845252ac6b662d5c72c29903813eJake Slack// All rights reserved. This program and the accompanying materials 603928aee4356845252ac6b662d5c72c29903813eJake Slack// are made available under the terms of the Eclipse Public License v1.0 703928aee4356845252ac6b662d5c72c29903813eJake Slack// and Apache License v2.0 which accompanies this distribution. 803928aee4356845252ac6b662d5c72c29903813eJake Slack// 903928aee4356845252ac6b662d5c72c29903813eJake Slack// The Eclipse Public License is available at 1003928aee4356845252ac6b662d5c72c29903813eJake Slack// http://www.eclipse.org/legal/epl-v10.html 1103928aee4356845252ac6b662d5c72c29903813eJake Slack// 1203928aee4356845252ac6b662d5c72c29903813eJake Slack// The Apache License v2.0 is available at 1303928aee4356845252ac6b662d5c72c29903813eJake Slack// http://www.opensource.org/licenses/apache2.0.php 1403928aee4356845252ac6b662d5c72c29903813eJake Slack// 1503928aee4356845252ac6b662d5c72c29903813eJake Slack// You may elect to redistribute this code under either of these licenses. 1603928aee4356845252ac6b662d5c72c29903813eJake Slack// ======================================================================== 1703928aee4356845252ac6b662d5c72c29903813eJake Slack// 1803928aee4356845252ac6b662d5c72c29903813eJake Slack 1903928aee4356845252ac6b662d5c72c29903813eJake Slackpackage org.eclipse.jetty.security; 2003928aee4356845252ac6b662d5c72c29903813eJake Slack 2103928aee4356845252ac6b662d5c72c29903813eJake Slackimport java.security.Principal; 2203928aee4356845252ac6b662d5c72c29903813eJake Slack 2303928aee4356845252ac6b662d5c72c29903813eJake Slackimport org.eclipse.jetty.util.security.B64Code; 2403928aee4356845252ac6b662d5c72c29903813eJake Slack 2503928aee4356845252ac6b662d5c72c29903813eJake Slackpublic class SpnegoUserPrincipal implements Principal 2603928aee4356845252ac6b662d5c72c29903813eJake Slack{ 2703928aee4356845252ac6b662d5c72c29903813eJake Slack private final String _name; 2803928aee4356845252ac6b662d5c72c29903813eJake Slack private byte[] _token; 2903928aee4356845252ac6b662d5c72c29903813eJake Slack private String _encodedToken; 3003928aee4356845252ac6b662d5c72c29903813eJake Slack 3103928aee4356845252ac6b662d5c72c29903813eJake Slack public SpnegoUserPrincipal( String name, String encodedToken ) 3203928aee4356845252ac6b662d5c72c29903813eJake Slack { 3303928aee4356845252ac6b662d5c72c29903813eJake Slack _name = name; 3403928aee4356845252ac6b662d5c72c29903813eJake Slack _encodedToken = encodedToken; 3503928aee4356845252ac6b662d5c72c29903813eJake Slack } 3603928aee4356845252ac6b662d5c72c29903813eJake Slack 3703928aee4356845252ac6b662d5c72c29903813eJake Slack public SpnegoUserPrincipal( String name, byte[] token ) 3803928aee4356845252ac6b662d5c72c29903813eJake Slack { 3903928aee4356845252ac6b662d5c72c29903813eJake Slack _name = name; 4003928aee4356845252ac6b662d5c72c29903813eJake Slack _token = token; 4103928aee4356845252ac6b662d5c72c29903813eJake Slack } 4203928aee4356845252ac6b662d5c72c29903813eJake Slack 4303928aee4356845252ac6b662d5c72c29903813eJake Slack public String getName() 4403928aee4356845252ac6b662d5c72c29903813eJake Slack { 4503928aee4356845252ac6b662d5c72c29903813eJake Slack return _name; 4603928aee4356845252ac6b662d5c72c29903813eJake Slack } 4703928aee4356845252ac6b662d5c72c29903813eJake Slack 4803928aee4356845252ac6b662d5c72c29903813eJake Slack public byte[] getToken() 4903928aee4356845252ac6b662d5c72c29903813eJake Slack { 5003928aee4356845252ac6b662d5c72c29903813eJake Slack if ( _token == null ) 5103928aee4356845252ac6b662d5c72c29903813eJake Slack { 5203928aee4356845252ac6b662d5c72c29903813eJake Slack _token = B64Code.decode(_encodedToken); 5303928aee4356845252ac6b662d5c72c29903813eJake Slack } 5403928aee4356845252ac6b662d5c72c29903813eJake Slack return _token; 5503928aee4356845252ac6b662d5c72c29903813eJake Slack } 5603928aee4356845252ac6b662d5c72c29903813eJake Slack 5703928aee4356845252ac6b662d5c72c29903813eJake Slack public String getEncodedToken() 5803928aee4356845252ac6b662d5c72c29903813eJake Slack { 5903928aee4356845252ac6b662d5c72c29903813eJake Slack if ( _encodedToken == null ) 6003928aee4356845252ac6b662d5c72c29903813eJake Slack { 6103928aee4356845252ac6b662d5c72c29903813eJake Slack _encodedToken = new String(B64Code.encode(_token,true)); 6203928aee4356845252ac6b662d5c72c29903813eJake Slack } 6303928aee4356845252ac6b662d5c72c29903813eJake Slack return _encodedToken; 6403928aee4356845252ac6b662d5c72c29903813eJake Slack } 6503928aee4356845252ac6b662d5c72c29903813eJake Slack} 66