Spnego / KerberosおよびApacheのHttpClientで認証するにはどうすればよいですか?

クリス:

HttpClientログインしたユーザーのActiveDirectory資格情報を使用してWebサイトに対して認証を行う接続を正しくセットアップするにはどうすればよいKerberos/Spnego authenticationですか?

クリス:

次に例を示します。

public class HttpSpnegoConnection {

    /**
     * Uses HttpClient 4.3.4 and CommonsIO 2.4
     */
    public static void main(String[] args) throws ClientProtocolException, IOException {


        String domain = "yourdomain.com";
        String kdc =  "thekdc.yourdomain.ch";
        // careful with aliases, 'somewebsite' has to be in the kerberos database
        String url = "http://somewebsite:8080/myresource/";
        // if the port does not match the kerberos database entry, skip it during the lookup
        boolean skipPortAtKerberosDatabaseLookup = true;

        File krb5Config = createKrb5Configuration(domain,kdc);

        System.out.println("Created config '"+krb5Config.getAbsolutePath()+"':");
        System.out.println(IOUtils.toString(new FileReader(krb5Config)));

        System.setProperty("java.security.krb5.conf", krb5Config.toURI().toString());
        System.setProperty("sun.security.krb5.debug", "true");
        System.setProperty("javax.security.auth.useSubjectCredsOnly","false");


        Lookup<AuthSchemeProvider> authSchemeRegistry = RegistryBuilder.<AuthSchemeProvider>create()
            .register(AuthSchemes.SPNEGO, new SPNegoSchemeFactory(skipPortAtKerberosDatabaseLookup))
            .build();

        CloseableHttpClient client = HttpClients.custom().setDefaultAuthSchemeRegistry(authSchemeRegistry).build();
        HttpClientContext context = HttpClientContext.create();
        BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider();

        // This may seem odd, but specifying 'null' as principal tells java to use the logged in user's credentials
        Credentials useJaasCreds = new Credentials() {

            public String getPassword() {
                return null;
            }

            public Principal getUserPrincipal() {
                return null;
            }

        };
        credentialsProvider.setCredentials( new AuthScope(null, -1, null), useJaasCreds );
        context.setCredentialsProvider(credentialsProvider);

        HttpGet httpget = new HttpGet(url);
        CloseableHttpResponse response = client.execute(httpget,context);
        String responseString = IOUtils.toString(response.getEntity().getContent());

        System.out.println("HTTP Response:");
        System.out.println(responseString);
    }

    /** 
        Creates a temporary krb5.conf
        [libdefaults]
            default_realm = <domain>

        [realms]
            snb.ch = {
                kdc = <kdc>
                admin_server = <kdc>
            }
     */
    private static File createKrb5Configuration(String domain, String kdc) throws IOException {
        File tempFile = File.createTempFile("krb5", "kdc");
        ArrayList<String> lines = new ArrayList<>();
        lines.add("[libdefaults]");
        lines.add("\tdefault_realm = "+domain);
        lines.add("[realms]");
        lines.add("\t"+domain+" = {");
        lines.add("\t\tkdc = "+kdc);
        lines.add("\t\tadmin_server = "+kdc);
        lines.add("\t}");
        FileWriter writer = new FileWriter(tempFile);
        IOUtils.writeLines(lines, System.lineSeparator(), writer);
        IOUtils.closeQuietly(writer);
        return tempFile;
    }

}

AD構成によっては、krb5.confの作成と指定がスキップされる場合があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

3パーティライブラリのないサーブレットにSPNEGO認証を追加するにはどうすればよいですか

分類Dev

SPNEGOとCASでLDAPユーザー属性を取得するにはどうすればよいですか?

分類Dev

WindowsでJava SPNEGOクライアントを機能させるにはどうすればよいですか?

分類Dev

SpringおよびAngularフロントエンド+ JWTでのKerberos Spnego

分類Dev

HttpClientを使用した.NETCore SPNEGO Auth

分類Dev

WindowsServer上のTomcatでのSpnegoキータブ認証が失敗する

分類Dev

WindowsServer上のTomcatでのSpnegoキータブ認証が失敗する

分類Dev

kerberos / spnego認証を使用した春のセキュリティ

分類Dev

Kerberos AD Spnego認証が1つのマシンで失敗し、別のマシンでは失敗しない

分類Dev

Spnegoを使用してKerberosチケットを復号化する

分類Dev

Weblogic12 + SPNEGO + Kerberos + LDAPを使用したSSO認証

分類Dev

SPNEGO Kerberos認証が失敗した場合、ChromeはERR_UNEXPECTEDを表示します

分類Dev

Kerberos SPNEGOを使用したTomcat SSOの構成

分類Dev

Kerberos SPNEGOを使用したTomcat SSOの構成

分類Dev

node.jsでmongodbに接続(および認証)するにはどうすればよいですか?

分類Dev

自己署名証明書で相互TLS認証を使用するようにApache httpclient 4.5+ SSLContextを構成するにはどうすればよいですか?

分類Dev

Apacheで期限切れの認証を設定するにはどうすればよいですか?

分類Dev

数百および数千のAPIエンドポイントの認証を確認するにはどうすればよいですか?

分類Dev

Windows 10でSPNEGOシングルサインオンにアクセスする純粋なJavaの方法

分類Dev

Jetty Spnego Authenticator-ユーザー名をログに記録する方法はありますか?

分類Dev

Chromeは、spnegoに401が必要になった後、h2ではなくhttp1.1を強制します

分類Dev

Linuxクライアントからの要求でSPNEGO / Kerberos資格情報が見つからないというエラー

分類Dev

Tomcat Windows認証:JNDIRealmはSPNEGO委任された資格情報を使用しません

分類Dev

passwdのKerberosを削除するにはどうすればよいですか?

分類Dev

失敗検証および合格検証のときに、laravel検証でコールバックを作成するにはどうすればよいですか?

分類Dev

apache bloodhoundで認証を設定するにはどうすればよいですか?

分類Dev

PHPでJiraAPIを認証するにはどうすればよいですか

分類Dev

SPNEGO認証はカスタムJavaクライアントからは機能しますが、Webブラウザーからは機能しません

分類Dev

AndroidアプリからSharePointREST呼び出しを認証するにはどうすればよいですか?

Related 関連記事

  1. 1

    3パーティライブラリのないサーブレットにSPNEGO認証を追加するにはどうすればよいですか

  2. 2

    SPNEGOとCASでLDAPユーザー属性を取得するにはどうすればよいですか?

  3. 3

    WindowsでJava SPNEGOクライアントを機能させるにはどうすればよいですか?

  4. 4

    SpringおよびAngularフロントエンド+ JWTでのKerberos Spnego

  5. 5

    HttpClientを使用した.NETCore SPNEGO Auth

  6. 6

    WindowsServer上のTomcatでのSpnegoキータブ認証が失敗する

  7. 7

    WindowsServer上のTomcatでのSpnegoキータブ認証が失敗する

  8. 8

    kerberos / spnego認証を使用した春のセキュリティ

  9. 9

    Kerberos AD Spnego認証が1つのマシンで失敗し、別のマシンでは失敗しない

  10. 10

    Spnegoを使用してKerberosチケットを復号化する

  11. 11

    Weblogic12 + SPNEGO + Kerberos + LDAPを使用したSSO認証

  12. 12

    SPNEGO Kerberos認証が失敗した場合、ChromeはERR_UNEXPECTEDを表示します

  13. 13

    Kerberos SPNEGOを使用したTomcat SSOの構成

  14. 14

    Kerberos SPNEGOを使用したTomcat SSOの構成

  15. 15

    node.jsでmongodbに接続(および認証)するにはどうすればよいですか?

  16. 16

    自己署名証明書で相互TLS認証を使用するようにApache httpclient 4.5+ SSLContextを構成するにはどうすればよいですか?

  17. 17

    Apacheで期限切れの認証を設定するにはどうすればよいですか?

  18. 18

    数百および数千のAPIエンドポイントの認証を確認するにはどうすればよいですか?

  19. 19

    Windows 10でSPNEGOシングルサインオンにアクセスする純粋なJavaの方法

  20. 20

    Jetty Spnego Authenticator-ユーザー名をログに記録する方法はありますか?

  21. 21

    Chromeは、spnegoに401が必要になった後、h2ではなくhttp1.1を強制します

  22. 22

    Linuxクライアントからの要求でSPNEGO / Kerberos資格情報が見つからないというエラー

  23. 23

    Tomcat Windows認証:JNDIRealmはSPNEGO委任された資格情報を使用しません

  24. 24

    passwdのKerberosを削除するにはどうすればよいですか?

  25. 25

    失敗検証および合格検証のときに、laravel検証でコールバックを作成するにはどうすればよいですか?

  26. 26

    apache bloodhoundで認証を設定するにはどうすればよいですか?

  27. 27

    PHPでJiraAPIを認証するにはどうすればよいですか

  28. 28

    SPNEGO認証はカスタムJavaクライアントからは機能しますが、Webブラウザーからは機能しません

  29. 29

    AndroidアプリからSharePointREST呼び出しを認証するにはどうすればよいですか?

ホットタグ

アーカイブ