无法使用跨不同机器生成的访问令牌进行身份验证

Posted

技术标签:

【中文标题】无法使用跨不同机器生成的访问令牌进行身份验证【英文标题】:Not able to Authenticate using access token generated across different Machines 【发布时间】:2019-08-27 04:16:18 【问题描述】:

我正在尝试使用访问令牌对 Azure SQL 数据库进行身份验证,问题是,访问令牌(和刷新令牌)是在不同的机器上生成的,而 SQL Server 身份验证 Java 代码在另一台机器上。我在第二台机器上的应用程序从属性文件中选择刷新令牌。我能够使用刷新令牌获取访问令牌,但无法使用它对 Azure SQL DB 进行身份验证。但是,如果我在同一台机器上完成整个过程,一切都会正常。

生成的访问令牌是绑定 IP 还是绑定机器?

错误:数据库连接失败:错误消息:用户“”登录失败。 ClientConnectionId:321ad51b-77d5-4681-a162-d6c8afd477aa

【问题讨论】:

您的意思是整个过程可以在两台机器上单独运行,而不是在您已将其地址添加到 Azure SQL 数据库防火墙的机器上? @PeterPan 感谢您的回复。实际上我想说的是,我在机器 A 上生成了访问令牌,并带有一些 IP 地址,而我正在另一台机器上使用该令牌,比如机器 B 上具有一些不同的 IP 地址。尝试创建与 SQL DB 的连接时出现上述错误。生成的访问令牌是机器还是 IP 地址绑定?是的,如果在单台机器上完成整个过程,我可以使用相同的令牌创建 Azure SQL DB 连接。我已将客户端 IP 地址添加到 Azure SQL 数据库防火墙中。 @PeterPan,今天我立即创建了一个示例应用程序来测试基于访问令牌的 SQL 身份验证,并且我能够成功创建连接。 (在机器 A 上生成的令牌用于在机器 B 上对数据库进行身份验证)。但是,问题仍然存在于我现有的应用程序中,我收到“数据库连接失败:错误消息:用户''登录失败。”。但是,当在任一机器上完成整个过程时,相同的应用程序可以正常工作。它占用了我的精力和时间,我无法找出现有应用程序的问题。 问题已经解决,是因为mssql JDBC jar的错误(相当旧)版本。 您可以发布一个答案来帮助遇到类似问题的每个人如何解决它。 【参考方案1】:

问题已解决,这是由于 MSSQL JDBC jar 版本错误(相当旧)所致。

【讨论】:

【参考方案2】:

每个用户都有一个默认数据库。当您连接到运行 Microsoft SQL Server 的计算机并且未指定登录数据库时,将使用默认数据库。但是,如果连接时默认数据库不可用,则可能无法连接

【讨论】:

以上是关于无法使用跨不同机器生成的访问令牌进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

整合JWT

无法根据访问令牌对用户进行身份验证 - MS Graph API C#

使用 Jwt 的基于令牌的身份验证无法授权

Laravel OAuth2 Passport API,生成令牌但无法发出请求:“未经身份验证”

为啥我收到错误“无法生成令牌。使用 Nodemailer 时检查您的身份验证选项?

如何使我的代码生成令牌并将其返回以对用户进行身份验证?