簡體   English   中英

Vertx中的多OAuth身份驗證

[英]Multi OAuth Authentication in Vertx

我有以下代碼:

    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期貨的一些內容,但是不確定我是否可以在這里使用它們,對於解決方案的任何建議或示例將不勝感激!

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,您不會受到傷害。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM