当前位置: 首页 > 知识库问答 >
问题:

可能发生此错误的原因列表:OAuth2::Error,invalid_grant:AADSTS65001

花健
2023-03-14

我们已经在我们的web应用上实现了Microsoft Azure oauth2,并且我们正在尝试解决用户在使用oauth方法时出现的常见错误。

错误:OAuth2::error,invalid_grant:AADSTS65001:未为“…”应用程序配置访问用户信息的权限,或者该权限已过期或被吊销。类似于我们在azure oauth流中大约82%的错误。

这是我们的配置:

# ==> Office 365 OAuth2
config.omniauth :azure_oauth2,
  client_id: '...',
  client_secret: '...',
  tenant_id: '...',
  resource: 'https://outlook.office365.com/',
  setup: lambda { |env|
    params = Rack::Utils.parse_query(env['QUERY_STRING'])
    options = env['omniauth.strategy'].options

    case params['state']
    when 'calendar'
      options[:prompt] = 'login'
    when 'select_account'
      options[:prompt] = 'login'
    end 
  }   

我们知道此错误可能由使用非Office 365帐户引起。由于我们的资源是“https://outlook.office365.com/”,并且由于我们的应用程序需要能够与您的日历交互,因此用户必须使用Office 365帐户进行身份验证。其他帐户(如微软实时帐户)会导致此错误。

问题

1-还有什么可能导致此错误?

2-有没有办法限制azure oauth流只允许真正的Office 365登录?

共有1个答案

邵毅
2023-03-14

原因是:如果用户被锁定,不得不重置密码或任何其他无效尝试登录Azure AD(根据o365验证用户)将使你的应用程序的刷新令牌无效。因此,应用程序将通过抛出此错误来优雅地处理已更改的密码(旧的刷新令牌)。在这种情况下,您的应用程序应该将用户重定向到授权页面以对用户进行身份验证。

希望这有帮助。

 类似资料:
  • 问题内容: 什么样的问题可能会导致Java的ProcessBuilder.start方法返回IOException并带有错误码= 5的注释? 具体来说,我们已经看到了一个远程客户系统,它按照以下方式运行一些Java代码: …抛出这样的异常… 我们已经确认异常中提到的命令“ C:\ example \ example.exe arguments1 arguments2”可以通过cmd.exe手动成功

  • 我正在使用mybatis将数据插入到postgresql DB中。我有19629个记录要插入。我正在尝试一次插入所有记录。但是,如果我向查询传递超过6K条记录,我将得到原因:org.PostgreSQL L.util.psqlException:发送到后端时发生I/O错误。 设置参数SQL:insert到temp_overdrive_csv_dtls(LPAT_LIBRARY_CARD_NUMER

  • 本文向大家介绍JS中的form.submit()不能提交表单的错误原因,包括了JS中的form.submit()不能提交表单的错误原因的使用技巧和注意事项,需要的朋友参考一下 直接上代码把: 表单数据提交到本页面,下面是js处理  如果表单提交,在本页面有一段提示信息 结果是测试了许久都没有看到提示信息,以为是代码错了或者方法写错了,仔细核对,在结果官方文档,确认没有出错。 formId.subm

  • 问题内容: 我在雄猫服务器(+ liferay)上收到此异常 我的课是这样的: 我在行上收到此异常, 当队列已满但大小为2 ^ 31时,可能会发生此错误,并且我确定没有那么多命令在等待。 一开始一切都稳定,但在我重新部署战争后,一切开始发生。此类不是战争的一部分,而是放在tomcat / lib中的jar中。 您是否知道为什么会发生这种情况以及如何解决? 问题答案: 从ThreadPoolExec

  • 我有一个复杂的应用程序,有很多第三方库,动态加载的插件。并且在main退出后,某个东西会导致应用程序崩溃()。调用堆栈指向未知地址,因此我不仅无法调试,甚至不知道崩溃发生在哪里。 我试着用运行这个应用程序--它显示了泄漏(一些千字节),但我认为它们是误报,并且/或者我无法对它们做任何处理,因为它们来自第三方。 我的问题:我相信内存泄漏不可能造成一个分段故障,至少我找不到可能的场景。但因为我不确定,

  • 问题内容: 我写了一个控制台应用程序就跑,然后。这很好。 然后,我创建了一个包,并将helloworld.java移入其中(包导入语句正确生成为)。然后我运行了它,效果也很好,并正确生成了类。 但是,当我从控制台运行时,它引发了“找不到类”错误。 请谁能告诉我这是什么问题? 问题答案: 尝试跑步 其中ABSOLUTE_PATH指向类文件以及程序包所在的目录。说它是生成类文件的目录,以及与源文件相同