【问题标题】:Azure AD No User Authentication in Spring BootAzure AD 在 Spring Boot 中没有用户身份验证
【发布时间】:2020-03-27 06:49:04
【问题描述】:

我想使用https://login.microsoftonline.com/{tenant}/oauth2/token 端点登录我的应用程序。我在发布请求中填写参数(client_id、client_secret、resource 和 grant_type:client_credentials)并获取访问令牌。当我使用它登录我的 API 时,spring boot 给了我错误:

com.microsoft.aad.adal4j.AuthenticationException: {"error_description":"AADSTS50058: A silent sign-in request was sent but no user is signed in.

我应该怎么做才能仅通过发布请求获得有效的不记名令牌?还是我缺少任何 azure 配置?

【问题讨论】:

  • 您能否为您的问题添加更多详细信息?您使用的是什么版本的 Spring Boot?你是如何配置 Spring Security 的?
  • @WimDeblauwe 现在我正在使用 azure-active-directory-spring-boot-starter 2.2.0.M1。添加了 AADAuthenticationFilter 过滤器。它正在使用微软的弹出窗口,但我需要在没有任何 GET 请求的情况下获取承载。我想用 POST 请求来做。

标签: azure spring-boot azure-active-directory bearer-token jwt-auth


【解决方案1】:

您所说的“登录”不是用户登录,而是对访问令牌的应用程序请求。然后应用程序可以使用这个令牌来调用其他一些 API,例如质谱图。它适用于根本不涉及用户的应用程序(例如守护程序服务)或应用程序想要调用 API 而不参考当前登录的用户。如果您想要让用户登录您的应用程序,则需要使用 OpenIDConnect 授权代码授予流程。使用MSAL4J

【讨论】:

  • 我想做的就是以非交互方式访问我自己的 spring-boot api。我不想弹出或重定向。你能给我更多关于这方面的信息吗?
  • 除非您使用 OAuth2 资源所有者流程,否则您无法在没有重定向的情况下执行此操作,除非在某些边缘情况下您不应该这样做。它不安全,不能正确支持 MFA 或 SSO。所有面向用户的现代应用程序都必须使用重定向和单独的弹出 UI 来验证用户。
猜你喜欢
  • 2018-11-17
  • 1970-01-01
  • 2019-04-22
  • 2019-03-13
  • 2020-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-15
相关资源
最近更新 更多