AFAIK, это просто невозможно без какого-либо вовлечения собственных расширений Java - для этого не существует Java API.
Вы можете взглянуть на проект JNA . Он использует нативный код, но вам не нужно его писать - это сделано для вас.
РЕДАКТИРОВАТЬ: Если все, что вы хотите сделать, это подтвердить имя пользователя / пароль, то я считаю, что направление JNDI / LDAP может работать для вас - я делал это раньше на AS / 400 из Ява, хотя я не был полностью доволен конечным результатом.
Если вы хотите, чтобы O / S распознал ваш процесс JVM как удостоверенный как определенный пользователь, вам потребуется некоторая форма доступа к непереносимым нативным API.
Кстати, о каких операциях мы говорим?
РЕДАКТИРОВАТЬ 2: Я собираюсь опубликовать фрагменты из того, как я использовал LDAP для проверки имени пользователя / пароля, на случай, если это то, что вы ищете; они взяты прямо из моего кода и не предназначены для прямой компиляции.
Это один из первых Java-кодов, который я когда-либо написал, пожалуйста, будьте милостивы:
import java.security.*;
import java.util.*;
import javax.naming.*;
import javax.naming.directory.*;
import javax.naming.ldap.*;
...
private Hashtable masterEnv; // master environment settings
private String authMethod; // default authentication method
...
public void init() {
// NOTE: Important to use a non-pooled context and a clone of the environment so that this authenticated
// connection is not returned to the pool and used for other operations
masterEnv=new Hashtable();
masterEnv.put(Context.INITIAL_CONTEXT_FACTORY,ldapFactory);
masterEnv.put(Context.PROVIDER_URL,providerUrl);
masterEnv.put(Context.SECURITY_PROTOCOL,secProtocol);
masterEnv.put(Context.REFERRAL,"follow");
masterEnv.put("com.sun.jndi.ldap.connect.pool","false");
authMethod=System.getProperty("authenticationMethod","simple");
}
...
private void verifyUserPassword(String ui, String pw, String am) throws NameNotFoundException, AuthenticationException, AuthenticationNotSupportedException, NamingException, NamingException {
// ui=user ID
// pw=password
// am=authentication method
DirContext lc=null; // ldap context object
Hashtable le; // ldap environment object
if(am.length()==0) { am=authMethod; }
le=(Hashtable)masterEnv.clone();
le.put(Context.SECURITY_AUTHENTICATION,am);
le.put(Context.SECURITY_PRINCIPAL ,ui);
le.put(Context.SECURITY_CREDENTIALS ,pw);
lc=new InitialDirContext(le);
lc.close();
}