test/jdk/sun/security/krb5/IPv6.java
author jboes
Fri, 08 Nov 2019 11:15:16 +0000
changeset 59029 3786a0962570
parent 47216 71c04702a3d5
permissions -rw-r--r--
8232853: AuthenticationFilter.Cache::remove may throw ConcurrentModificationException Summary: Change implementation to use iterator instead of plain LinkedList Reviewed-by: dfuchs, vtewari
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3864
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
     1
/*
40975
680639c9b307 8165689: Fix module dependencies for sun/security/pkcs11/* tests
skovalev
parents: 32427
diff changeset
     2
 * Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
3864
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
     4
 *
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
     7
 * published by the Free Software Foundation.
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
     8
 *
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    13
 * accompanied this code).
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    14
 *
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    18
 *
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 3944
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 3944
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 3944
diff changeset
    21
 * questions.
3864
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    22
 */
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    23
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    24
/*
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    25
 * @test
3944
e098e010b520 6885166: regression test for 6877357 (IPv6 address does not work) error (timed out)
weijun
parents: 3864
diff changeset
    26
 * @bug 6877357 6885166
9008
1c23e333dd76 7031536: test/sun/security/krb5/auto/HttpNegotiateServer.java should not use static ports
weijun
parents: 7977
diff changeset
    27
 * @run main/othervm IPv6
40975
680639c9b307 8165689: Fix module dependencies for sun/security/pkcs11/* tests
skovalev
parents: 32427
diff changeset
    28
 * @modules jdk.security.auth
3864
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    29
 * @summary IPv6 address does not work
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    30
 */
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    31
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    32
import com.sun.security.auth.module.Krb5LoginModule;
40975
680639c9b307 8165689: Fix module dependencies for sun/security/pkcs11/* tests
skovalev
parents: 32427
diff changeset
    33
import java.io.BufferedReader;
680639c9b307 8165689: Fix module dependencies for sun/security/pkcs11/* tests
skovalev
parents: 32427
diff changeset
    34
import java.io.ByteArrayOutputStream;
680639c9b307 8165689: Fix module dependencies for sun/security/pkcs11/* tests
skovalev
parents: 32427
diff changeset
    35
import java.io.FileOutputStream;
680639c9b307 8165689: Fix module dependencies for sun/security/pkcs11/* tests
skovalev
parents: 32427
diff changeset
    36
import java.io.PrintStream;
680639c9b307 8165689: Fix module dependencies for sun/security/pkcs11/* tests
skovalev
parents: 32427
diff changeset
    37
import java.io.StringReader;
3864
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    38
import java.util.HashMap;
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    39
import java.util.Map;
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    40
import java.util.regex.Matcher;
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    41
import java.util.regex.Pattern;
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    42
import javax.security.auth.Subject;
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    43
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    44
public class IPv6 {
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    45
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    46
    public static void main(String[] args) throws Exception {
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    47
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    48
        String[][] kdcs = {
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    49
                {"simple.host", null},  // These are legal settings
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    50
                {"simple.host", ""},
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    51
                {"simple.host", "8080"},
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    52
                {"0.0.0.1", null},
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    53
                {"0.0.0.1", ""},
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    54
                {"0.0.0.1", "8080"},
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    55
                {"1::1", null},
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    56
                {"[1::1]", null},
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    57
                {"[1::1]", ""},
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    58
                {"[1::1]", "8080"},
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    59
                {"[1::1", null},        // Two illegal settings
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    60
                {"[1::1]abc", null},
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    61
        };
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    62
        // Prepares a krb5.conf with every kind of KDC settings
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    63
        PrintStream out = new PrintStream(new FileOutputStream("ipv6.conf"));
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    64
        out.println("[libdefaults]");
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    65
        out.println("default_realm = V6");
3944
e098e010b520 6885166: regression test for 6877357 (IPv6 address does not work) error (timed out)
weijun
parents: 3864
diff changeset
    66
        out.println("kdc_timeout = 1");
3864
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    67
        out.println("[realms]");
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    68
        out.println("V6 = {");
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    69
        for (String[] hp: kdcs) {
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    70
            if (hp[1] != null) out.println("    kdc = "+hp[0]+":"+hp[1]);
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    71
            else out.println("    kdc = " + hp[0]);
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    72
        }
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    73
        out.println("}");
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    74
        out.close();
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    75
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    76
        System.setProperty("sun.security.krb5.debug", "true");
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    77
        System.setProperty("java.security.krb5.conf", "ipv6.conf");
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    78
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    79
        ByteArrayOutputStream bo = new ByteArrayOutputStream();
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    80
        PrintStream po = new PrintStream(bo);
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    81
        PrintStream oldout = System.out;
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    82
        System.setOut(po);
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    83
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    84
        try {
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    85
            Subject subject = new Subject();
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    86
            Krb5LoginModule krb5 = new Krb5LoginModule();
7977
f47f211cd627 7008713: diamond conversion of kerberos5 and security tools
smarks
parents: 5506
diff changeset
    87
            Map<String, String> map = new HashMap<>();
f47f211cd627 7008713: diamond conversion of kerberos5 and security tools
smarks
parents: 5506
diff changeset
    88
            Map<String, Object> shared = new HashMap<>();
3864
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    89
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    90
            map.put("debug", "true");
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    91
            map.put("doNotPrompt", "true");
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    92
            map.put("useTicketCache", "false");
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    93
            map.put("useFirstPass", "true");
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    94
            shared.put("javax.security.auth.login.name", "any");
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    95
            shared.put("javax.security.auth.login.password", "any".toCharArray());
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    96
            krb5.initialize(subject, null, shared, map);
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    97
            krb5.login();
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    98
        } catch (Exception e) {
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
    99
            // Ignore
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   100
        }
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   101
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   102
        po.flush();
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   103
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   104
        System.setOut(oldout);
3944
e098e010b520 6885166: regression test for 6877357 (IPv6 address does not work) error (timed out)
weijun
parents: 3864
diff changeset
   105
        BufferedReader br = new BufferedReader(new StringReader(
e098e010b520 6885166: regression test for 6877357 (IPv6 address does not work) error (timed out)
weijun
parents: 3864
diff changeset
   106
                new String(bo.toByteArray())));
3864
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   107
        int cc = 0;
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   108
        Pattern r = Pattern.compile(".*KrbKdcReq send: kdc=(.*) UDP:(\\d+),.*");
3944
e098e010b520 6885166: regression test for 6877357 (IPv6 address does not work) error (timed out)
weijun
parents: 3864
diff changeset
   109
        String line;
e098e010b520 6885166: regression test for 6877357 (IPv6 address does not work) error (timed out)
weijun
parents: 3864
diff changeset
   110
        while ((line = br.readLine()) != null) {
3864
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   111
            Matcher m = r.matcher(line.subSequence(0, line.length()));
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   112
            if (m.matches()) {
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   113
                System.out.println("------------------");
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   114
                System.out.println(line);
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   115
                String h = m.group(1), p = m.group(2);
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   116
                String eh = kdcs[cc][0], ep = kdcs[cc][1];
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   117
                if (eh.charAt(0) == '[') {
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   118
                    eh = eh.substring(1, eh.length()-1);
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   119
                }
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   120
                System.out.println("Expected: " + eh + " : " + ep);
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   121
                System.out.println("Actual: " + h + " : " + p);
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   122
                if (!eh.equals(h) ||
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   123
                        (ep == null || ep.length() == 0) && !p.equals("88") ||
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   124
                        (ep != null && ep.length() > 0) && !p.equals(ep)) {
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   125
                    throw new Exception("Mismatch");
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   126
                }
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   127
                cc++;
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   128
            }
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   129
        }
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   130
        if (cc != kdcs.length - 2) {    // 2 illegal settings at the end
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   131
            throw new Exception("Not traversed");
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   132
        }
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   133
    }
21eb0b487d1f 6877357: IPv6 address does not work
weijun
parents:
diff changeset
   134
}