【问题标题】:Java Spring MVC Auth0 SSO not getting tokens (no Spring Boot)Java Spring MVC Auth0 SSO 没有获取令牌(没有 Spring Boot)
【发布时间】:2017-07-23 20:35:09
【问题描述】:

我正在尝试启动并运行 SSO。因此,当我登录不同的应用程序(在同一个 auth0 域上)并转到我的应用程序的登录页面时,我希望我的应用程序自动登录。

我设法让第一部分运行起来,并收到了来自 auth0 的授权码。但是当我尝试检索令牌时,它们都是空的。

我的 redirectuUri 和 clientSecret 是正确的,我假设之前返回的授权码也是正确的。

似乎请求没有返回任何令牌。它们都是空的。

我从哪里开始找出问题所在?谢谢!

public Tokens getTokens(final String authorizationCode, final String redirectUri) {
    Validate.notNull(authorizationCode);
    Validate.notNull(redirectUri);
    System.out.println("Sending request with code to retrieve tokens.");
    final Credentials creds = authenticationAPIClient
            .token(authorizationCode, redirectUri) 
            .setClientSecret(clientSecret).execute();       
    return new Tokens(creds.getIdToken(), creds.getAccessToken(), creds.getType(), creds.getRefreshToken());
}

【问题讨论】:

  • 现在将发布一个简短的答案,如果仍然不确定,请离开 cmets。

标签: java spring single-sign-on auth0


【解决方案1】:

如果使用 Auth0 Spring MVC 库(而不是 Spring Security MVC) - 那么放置断点的最佳位置是 Callback Controller's handle method 的顶部

然后您可以单步执行/介入 - 并检查正在发生的事情。此方法调用getTokens 并委托给Auth0ClientImpl,这是您在问题中引用的代码块。

检查您的ClientIdClientSecretDomain 是否都正确 - 如果您的代码达到此方法 - 传入的 code / redirectURI 也是正确的。也会检查仪表板中的 Auth0 日志,并确定是否记录了任何成功的身份验证事件。

最后,请您确认您正在使用哪个版本的auth0-java(maven POM 依赖/gradle 依赖) - 以及您还引用了哪个版本的auth0-spring-mvc 库。

对于 SSO 特定示例 - 纯 Spring 介于两种情况之间,因为我为纯 java 编写了一种,为 Spring Security MVC 编写了一种 - 但是通过研究这两个示例,您应该对正在发生的事情有一个很好的了解:

Auth0 Servlet SSO Sample

Auth0 Spring Security SSO Sample

尤其要研究 JSP 页面,因为这是 SSO 检查和自动登录逻辑所在的地方。还要确保在 Auth0 租户中定义的每个客户端的设置上启用 SSO。

免责声明:我是上述库的作者 - 如果您仍有问题并需要任何说明,请在下方留下我的 cmets。

【讨论】:

  • 再次感谢!我现在开始制作样品,并会回复您。我正在使用 auth0-spring-mvc 1.1.2。和 mvc-auth-commons 0.1.2
  • 很高兴听到。随时通知我。
猜你喜欢
  • 2017-07-20
  • 2015-11-03
  • 2022-11-15
  • 1970-01-01
  • 2017-12-21
  • 2017-01-27
  • 2018-08-04
  • 2021-12-23
  • 2019-09-14
相关资源
最近更新 更多