如何在wicket中实现外部认证

How to implement external auth in wicket

我想使用一些外部身份验证登录到我的应用程序,例如 facebook google 或 steam。

我找到了库:org.pac4j,它支持部分登录,但我不知道如何将它与 wicket 集成。成功验证后,我想登录我的会话。

public class WicketSteamAuthenticator extends SteamAuthenticator {

    public WicketSteamAuthenticator(SteamClient client) {
        super(client);
    }

    @Override
    public void validate(OpenIdCredentials credentials, WebContext context) {
        super.validate(credentials, context);
        AuthenticatedWebSession.get().signIn(credentials.getUserProfile().getId(), null);
    }
}

问题是这个安全过滤器在 wicket-filter 之前,这意味着我遇到了异常:

There is no application attached to current thread wicket session

是否已经有一些示例如何使用具有 spring 安全性和一些外部身份验证的检票口?

我对 org.pac4j 了解不深,但据我了解,它与 callback endpoints 一起使用,也可用于在 Session 中保存用户配置文件。 因此,我不会在 AuthenticatedWebSession 上调用登录,而是创建 class AbstractAuthenticatedWebSession 的自定义实现,它能够检索以前由 org.pac4j 保存的用户配置文件,并确定用户是否已签名 ID 以及它具有哪些角色。 希望对您有所帮助。