⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sspijniclient.java

📁 第三方的SQL Server and Sybase的jdbc dirver,速度更快
💻 JAVA
字号:
// jTDS JDBC Driver for Microsoft SQL Server and Sybase// Copyright (C) 2004 The jTDS Project//// This library is free software; you can redistribute it and/or// modify it under the terms of the GNU Lesser General Public// License as published by the Free Software Foundation; either// version 2.1 of the License, or (at your option) any later version.//// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU// Lesser General Public License for more details.//// You should have received a copy of the GNU Lesser General Public// License along with this library; if not, write to the Free Software// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA//package net.sourceforge.jtds.util;import java.sql.SQLException;/** * A JNI client to SSPI based CPP program (DLL) that returns the user * credentials for NTLM authentication. * <p/> * The DLL name is ntlmauth.dll. * * @author Magendran Sathaiah (mahi@aztec.soft.net) */public class SSPIJNIClient {    /** Singleton instance. */    private static SSPIJNIClient thisInstance;    /** SSPI native library loaded flag. */    private static boolean libraryLoaded;    /** SSPI client initialized flag. */    private boolean initialized;    /** Initializes the SSPI client. */    private native void initialize();    /** Uninitializes the SSPI client. */    private native void unInitialize();    /**     * Prepares the NTLM TYPE-1 message and returns it as a     * <code>byte[]</code>.     */    private native byte[] prepareSSORequest();    /**     * Prepares the NTLM TYPE-3 message using the current user's credentials.     * <p>     * It needs the challenge BLOB and it's size as input. The challenge BLOB     * is nothig but the TYPE-2 message that is received from the SQL Server.     *     * @param buf  challenge BLOB     * @param size challenge BLOB size     * @return NTLM TYPE-3 message     */    private native byte[] prepareSSOSubmit(byte[] buf, long size);    static {        try {            System.loadLibrary("ntlmauth");            SSPIJNIClient.libraryLoaded = true;        } catch (UnsatisfiedLinkError err) {            Logger.println("Unable to load library: " + err);        }    }    /**     * Private constructor for singleton.     */    private SSPIJNIClient() {        //empty constructor    }    /**     * Returns the singleton <code>SSPIJNIClient</code> instance.     *     * @throws SQLException if an error occurs during initialization     */    public static SSPIJNIClient getInstance() throws Exception {        if (thisInstance == null) {            if (!libraryLoaded) {                throw new Exception("Native SSPI library not loaded. "                        + "Check the java.library.path system property.");            }            thisInstance = new SSPIJNIClient();            thisInstance.invokeInitialize();        }        return thisInstance;    }    /**     * Calls {@link #initialize()} if the SSPI client is not already inited.     */    public void invokeInitialize() {        if (!initialized) {            initialize();            initialized = true;        }    }    /**     * Calls {@link #unInitialize()} if the SSPI client is inited.     */    public void invokeUnInitialize() {        if (initialized) {            unInitialize();            initialized = false;        }    }    /**     * Calls {@link #prepareSSORequest()} to prepare the NTLM TYPE-1 message.     *     * @throws Exception if an error occurs during the call or the SSPI client     *                   is uninitialized     */    public byte[] invokePrepareSSORequest() throws Exception {        if (!initialized) {            throw new Exception("SSPI Not Initialized");        }        return prepareSSORequest();    }    /**     * Calls {@link #prepareSSOSubmit(byte[], long)} to prepare the NTLM TYPE-3     * message.     *     * @throws Exception if an error occurs during the call or the SSPI client     *                   is uninitialized     */    public byte[] invokePrepareSSOSubmit(byte[] buf) throws Exception {        if (!initialized) {            throw new Exception("SSPI Not Initialized");        }        return prepareSSOSubmit(buf, buf.length);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -