首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用vert.x AzureADAuth?

如何使用vert.x AzureADAuth?
EN

Stack Overflow用户
提问于 2019-01-02 19:53:00
回答 1查看 272关注 0票数 0

在我们的公司中,我们试着开始使用oauth2.0,我们的Azure租户在后端使用vue.js作为前端和vert.x服务。

我的想法是我想

如果我用我们从Azure获得的jwt调用vert.x服务,就会得到一个运行时异常:“没有足够多的片段”。JWT有3个与预期类似的部分。我就是这样创建AzureADAuth的:

代码语言:javascript
复制
    OAuth2ClientOptions opts = new OAuth2ClientOptions();
    opts.setFlow(OAuth2FlowType.AUTH_JWT);
    OAuth2Auth auth = AzureADAuth.create(vertx,"{{application-id}}","{{secret}}","{{tenant-id}}", opts);

在我的处理程序中,我试图验证:

代码语言:javascript
复制
    HttpServerRequest request = context.request();
    String authorization = request.headers().get(HttpHeaders.AUTHORIZATION);

    String[] parts = authorization.split(" ");
    scheme = parts[0];
    token = parts[1];

    JsonObject creds = new JsonObject();
    creds.put("token_type", scheme);
    creds.put("access_token", token);

    authProvider.authenticate(creds,userAsyncResult -> {
      if(userAsyncResult.succeeded()){
          context.next();
      } else {
          context.fail(401);
      }
    });

因此,在我发现需要添加一个jwk之后,我尝试使用AzureADAuth.discover方法。

我的代码如下所示:

代码语言:javascript
复制
    OAuth2ClientOptions optsDisc = new OAuth2ClientOptions();
    optsDisc.setSite("https://login.windows.net/{tenant-id}");
    optsDisc.setClientID("{application-id}");
    AzureADAuth.discover(vertx, optsDisc,res -> {
        if (res.succeeded()) {
            if(log.isDebugEnabled()) {
                log.debug("Discover succeeded.");
            }
        } else {
            log.error("Discover failed.");
        }
    });

运行此代码将导致“发现失败”,其中包含以下消息:

java.lang.RuntimeException: java.security.cert.CertificateException:无法解析证书: java.io.IOException:空输入

因此,我的问题是如何用vert.x验证我的用户?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-08 07:00:02

很明显我在这里遇到了版本冲突。我将所有依赖项设置为3.6.2,现在它可以工作了。我花了一点时间才弄明白如何处理这个发现,并且在发现之后我不需要用AzureAdAuth创建一个新的AzureAdAuth对象。

供日后参考:

代码语言:javascript
复制
OAuth2ClientOptions optsDisc = new OAuth2ClientOptions();
opts.setClientID("{client-id}");
AzureADAuth.discover(vertx, opts,res -> {
if (res.succeeded()) {
//use res.result() to access the through discovery already created OAuth2Auth Object
log.debug("Discover succeeded.");
} else {
log.error("Discover failed.");
}
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54012340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档