001    /**
002     *
003     * Licensed to the Apache Software Foundation (ASF) under one or more
004     * contributor license agreements.  See the NOTICE file distributed with
005     * this work for additional information regarding copyright ownership.
006     * The ASF licenses this file to You under the Apache License, Version 2.0
007     * (the "License"); you may not use this file except in compliance with
008     * the License.  You may obtain a copy of the License at
009     *
010     *     http://www.apache.org/licenses/LICENSE-2.0
011     *
012     *  Unless required by applicable law or agreed to in writing, software
013     *  distributed under the License is distributed on an "AS IS" BASIS,
014     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015     *  See the License for the specific language governing permissions and
016     *  limitations under the License.
017     */
018    package org.apache.geronimo.openejb;
019    
020    import org.apache.openejb.client.IdentityResolver;
021    import org.apache.geronimo.security.ContextManager;
022    import org.apache.geronimo.security.IdentificationPrincipal;
023    
024    import javax.security.auth.Subject;
025    import java.security.AccessController;
026    import java.util.Set;
027    
028    /**
029     * @version $Rev$ $Date$
030     */
031    public class GeronimoIdentityResolver implements IdentityResolver {
032        public Object getIdentity() {
033            Subject subject = ContextManager.getCurrentCaller();
034            if (subject == null) {
035                return null;
036            }
037    
038            Set<ServerIdentityToken> ids = subject.getPrivateCredentials(ServerIdentityToken.class);
039            if (ids.isEmpty()) {
040                return null;
041            }
042            ServerIdentityToken id = ids.iterator().next();
043            return id.getId();
044        }
045    }