HashLoginService 和 Jetty9

Evg*_*ich 2 java security jetty jetty-9

我正在尝试以编程方式设置用户名/密码组合:

    HashLoginService loginService = new HashLoginService();
    loginService.setName("myrealm");

    Credential credential = new Password("password");

    AbstractLoginService.UserPrincipal principal =
            new AbstractLoginService.UserPrincipal("username",credential);

    Subject subject = new Subject();
    subject.getPrincipals().add(principal);
    subject.getPrivateCredentials().add(credential);


    loginService.getIdentityService().newUserIdentity(
            subject,
            principal,
            new String[]{"users"});
Run Code Online (Sandbox Code Playgroud)

但我得到了 401。我在这里错过了什么?以前可以做简单的事

  loginService.putUser("username",
            new Password("password"),
            new String[]{"users"});
Run Code Online (Sandbox Code Playgroud)

但不适用于 jetty 9。

希望得到一些指导。谢谢你!

小智 5

使用以下代码解决您遇到的问题,并针对 jetty 版本 9.4.8 进行了测试:

HashLoginService loginService = new HashLoginService("MyRealm");

UserStore userStore = new UserStore();
userStore.addUser(userName, new Password("password"), new String[] { "users"});

loginService.setUserStore(userStore);
Run Code Online (Sandbox Code Playgroud)