1 //======================================================================== 2 //Copyright 2004-2008 Mort Bay Consulting Pty. Ltd. 3 //------------------------------------------------------------------------ 4 //Licensed under the Apache License, Version 2.0 (the "License"); 5 //you may not use this file except in compliance with the License. 6 //You may obtain a copy of the License at 7 //http://www.apache.org/licenses/LICENSE-2.0 8 //Unless required by applicable law or agreed to in writing, software 9 //distributed under the License is distributed on an "AS IS" BASIS, 10 //WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11 //See the License for the specific language governing permissions and 12 //limitations under the License. 13 //======================================================================== 14 15 package org.mortbay.jetty.plus.jaas.spi; 16 import java.sql.Connection; 17 import java.util.Map; 18 19 import javax.naming.InitialContext; 20 import javax.naming.NamingException; 21 import javax.security.auth.Subject; 22 import javax.security.auth.callback.CallbackHandler; 23 import javax.sql.DataSource; 24 // ======================================================================== 25 // $Id: DataSourceLoginModule.java 3462 2008-07-31 04:12:51Z gregw $ 26 // Copyright 1999-2004 Mort Bay Consulting Pty. Ltd. 27 // ------------------------------------------------------------------------ 28 // Licensed under the Apache License, Version 2.0 (the "License"); 29 // you may not use this file except in compliance with the License. 30 // You may obtain a copy of the License at 31 // http://www.apache.org/licenses/LICENSE-2.0 32 // Unless required by applicable law or agreed to in writing, software 33 // distributed under the License is distributed on an "AS IS" BASIS, 34 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 35 // See the License for the specific language governing permissions and 36 // limitations under the License. 37 // ======================================================================== 38 39 /** 40 * DataSourceLoginModule 41 * 42 * A LoginModule that uses a DataSource to retrieve user authentication 43 * and authorisation information. 44 * 45 * @see org.mortbay.jetty.plus.jaas.spi.JDBCLoginModule 46 * 47 */ 48 public class DataSourceLoginModule extends AbstractDatabaseLoginModule 49 { 50 51 private String dbJNDIName; 52 private DataSource dataSource; 53 54 /* ------------------------------------------------ */ 55 /** Init LoginModule. 56 * Called once by JAAS after new instance created. 57 * @param subject 58 * @param callbackHandler 59 * @param sharedState 60 * @param options 61 */ 62 public void initialize(Subject subject, 63 CallbackHandler callbackHandler, 64 Map sharedState, 65 Map options) 66 { 67 try 68 { 69 super.initialize(subject, callbackHandler, sharedState, options); 70 71 //get the datasource jndi name 72 dbJNDIName = (String)options.get("dbJNDIName"); 73 74 InitialContext ic = new InitialContext(); 75 dataSource = (DataSource)ic.lookup("java:comp/env/"+dbJNDIName); 76 } 77 catch (NamingException e) 78 { 79 throw new IllegalStateException (e.toString()); 80 } 81 } 82 83 84 /** 85 * Get a connection from the DataSource 86 * @see org.mortbay.jetty.plus.jaas.spi.AbstractDatabaseLoginModule#getConnection() 87 * @return 88 * @throws Exception 89 */ 90 public Connection getConnection () 91 throws Exception 92 { 93 return dataSource.getConnection(); 94 } 95 96 97 98 99 100 }