[英]Why does a LoginContext producer work in a Java EE/Servlet container?
開源Java EE 6 Petstore項目實現了LoginContext生產者來執行自定義用戶身份驗證。 下面是源代碼。
為什么行得通? 它是特定於應用程序服務器還是標准行為(例如,由某些JSR強制執行)?
package org.agoncal.application.petstore.security;
import org.agoncal.application.petstore.util.ConfigProperty;
import javax.enterprise.inject.Produces;
import javax.inject.Inject;
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
import java.io.File;
import java.net.URISyntaxException;
/**
* @author blep
* Date: 16/02/12
* Time: 07:28
*/
public class LoginContextProducer {
// ======================================
// = Attributes =
// ======================================
@Inject
private SimpleCallbackHandler callbackHandler;
// ======================================
// = Business methods =
// ======================================
@Produces
public LoginContext produceLoginContext(@ConfigProperty("loginConfigFile") String loginConfigFileName,
@ConfigProperty("loginModuleName") String loginModuleName) throws LoginException, URISyntaxException {
System.setProperty("java.security.auth.login.config", new File(LoginContextProducer.class.getResource(loginConfigFileName).toURI()).getPath());
try {
return new LoginContext(loginModuleName, callbackHandler);
} catch (Exception e) {
System.out.println("ouch!!!");
return null;
}
}
}
LoginContext是Java身份驗證和授權服務(JAAS)的一部分 。
LoginContextProducer是CDI“生產者”,它處理產生LoginContext的問題,以便其他類可以注入它。 定制登錄模塊在SimpleLoginModule中實現,並且其使用在配置文件(config.properties)中指定。
如果您願意使用應用程序服務器提供的JAAS的默認實現,則無需編寫自定義登錄模塊或生產者。
看一下項目在這里,POM Maven如果沒有讓任何東西逃脫,這些項目中將使用這些主要技術:
在GlassFish服務器上運行。
J2EE規范6 在這里說,你可以使用相關性,則代碼標准。 如果您的問題是該項目是否可以與J2ee的原始/本地依賴項一起工作,那么我將回答“否”,您將有待編譯的該項目的依賴項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.