【问题标题】:Multi OAuth Authentication in VertxVertx 中的多 OAuth 身份验证
【发布时间】:2016-10-06 22:00:13
【问题描述】:

我有以下代码:

    Class<OAuthHandler> _tempClass = (Class<OAuthHandler>) Class.forName(providerClass);
    Constructor<OAuthHandler> oAuthHandlerConstructor = _tempClass.getDeclaredConstructor(Vertx.class);
    OAuthHandler oAuthHandler = oAuthHandlerConstructor.newInstance(vertx);
    OAuth2Auth oAuth2Auth = oAuthHandler.getoAuth2Auth();
    /* AccessToken accessToken = */ oAuth2Auth.getToken(oAuthHandler.getTokenConfig(code), accessTokenResponse -> {
        if (accessTokenResponse.failed()) {
            System.out.println("Failed to obtain token");
        } else {
            AccessToken accessToken = accessTokenResponse.result();
            // Return the token? Somehow.
        }
    });

oAuthHandler 是提供者特定的实现,它根据提供者名称提供一些配置等,并且简单地包装了 vertx-auth-oauth2 库提供的方法。

我想在访问令牌返回后使用它,但不在getToken Lambda 内,所以我可以获取有关我需要的用户的任何信息。

我看到了一些关于 Vert.x Futures 的东西,但不确定我是否可以在这里使用它们,任何关于解决方案的建议或示例将不胜感激!

【问题讨论】:

    标签: java oauth vert.x oauth2


    【解决方案1】:

    Vert.x OAuth2 支持不是特定于供应商的。根据文档http://vertx.io/docs/vertx-web/java/#_oauth2authhandler_handler,您将看到相同的代码可以处理以下提供程序:

    • 谷歌
    • 推特
    • Github
    • 领英
    • 脸书
    • 钥匙斗篷

    一旦 3.4 发布,一些小修复将使其也兼容:

    • Azure AD

    此外,处理程序是通用的,因此如果您有自己的提供程序,您也可以使用它。

    现在关于如何直接使用令牌的问题的第二部分,那么您可能不想要OAuth2Handler,因为它对您隐藏了所有这些并且您想直接与OAuth2 客户端交互:

    http://vertx.io/docs/vertx-auth-oauth2/java/#_getting_started

    从上面的文档中有一个入门代码示例,它允许您在不使用反射的情况下与 get 令牌进行交互。这样更好,因为如果内部 api 发生变化,您不会受到伤害。

    【讨论】:

    猜你喜欢
    • 2015-02-02
    • 1970-01-01
    • 2018-07-10
    • 2011-09-17
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多