コード例 #1
0
  public static void main(String[] args) throws Exception {
    Oid mech;
    if (args[0].equals("spnego")) {
      mech = GSSUtil.GSS_SPNEGO_MECH_OID;
    } else if (args[0].contains("krb5")) {
      mech = GSSUtil.GSS_KRB5_MECH_OID;
    } else {
      throw new Exception("Unknown mech");
    }

    OneKDC kdc = new OneKDC(null);
    kdc.writeJAASConf();
    kdc.setOption(KDC.Option.PREAUTH_REQUIRED, false);
    Map<String, List<String>> map = new HashMap<>();
    map.put(
        OneKDC.SERVER + "@" + OneKDC.REALM,
        Arrays.asList(new String[] {OneKDC.BACKEND + "@" + OneKDC.REALM}));
    kdc.setOption(KDC.Option.ALLOW_S4U2PROXY, map);

    Context c, s, b;
    c = Context.fromJAAS("client");
    s = Context.fromJAAS("server");
    b = Context.fromJAAS("backend");

    c.startAsClient(OneKDC.SERVER, mech);
    s.startAsServer(null, mech, false);

    Context.handshake(c, s);
    Context p = s.delegated();

    p.startAsClient(OneKDC.BACKEND, mech);
    b.startAsServer(mech);
    Context.handshake(p, b);

    p.startAsClient(OneKDC.BACKEND, mech);
    b.startAsServer(mech);
    Context.handshake(p, b);
  }