您能否从与您在 OIDC 中请求授权代码的来源不同的来源完成令牌交换?

问题描述 投票:0回答:1

我目前正在尝试通过 OIDC 协议(使用 onelogin 进行测试)让我们的桌面应用程序为 SSO 做好准备,我们的设置如下:

我们有一个桌面应用程序、一个现有的后端服务器和一个新的 ASP.NET 服务器来处理大部分 SSO 流程。我们希望新的 ASP.NET 服务器能够处理大部分 SSO 过程,基本上除了打开浏览器到用户的 IdP 进行登录之外的所有事情。通过 IdP 登录后,重定向 URL 就是我们存储授权代码的新服务器以方便以后查找的方式。然后,我们的客户端通过调用我们的后端服务器开始登录,后端服务器又向我们的新服务器发出请求,告诉它进行令牌交换(为了方便起见,我不会在这里讨论如何将授权码与用户等匹配)简洁并且因为它似乎有效)。问题就在这里,因为当新服务器尝试令牌交换时,它总是得到 invalid_grant 响应。我们假设这是因为授权代码请求和令牌交换请求来自两个不同的来源,尽管我们不能确定。是否可以按照我们尝试的方式做到这一点?

我没有包含任何代码片段,因为请求本身似乎没问题;当我在我们的测试应用程序或新服务器中拥有所有(完全相同的)身份验证流程代码时,它工作得很好。问题是这只有效,因为我在本地测试,所以 ASP.NET 服务器在我的机器上,它能够在我的机器上弹出浏览器,但将来不会,所以我们只能弹出打开浏览器从客户端应用程序启动该进程。任何建议将不胜感激!

我们尝试在新服务器和测试客户端中执行整个授权过程,希望两者都能正常工作,结果确实如此;但分解它并不像我们预期的那样有效,而是我们需要做的。我们还尝试在测试客户端中执行整个授权过程,然后仅将 access_token 发送到服务器,以查看是否至少可以访问 userinfo 端点,但它不起作用。我已经尝试三次检查请求参数,但它们肯定匹配并且有效,因为当两个请求来自同一来源时,完全相同的代码可以工作。

single-sign-on openid-connect native
1个回答
0
投票

在进行更多调试和在线搜索后,我发现令牌交换请求中指定的重定向 URI 必须与授权请求中最初指定的重定向 URI 匹配。一旦我更改了重定向 URI,其他所有内容都会再次按预期工作,无需进行其他更改。到目前为止,我还没有在任何地方看到明确提及这一点,所以希望将来有人会看到这一点,并避免我经历的麻烦。

© www.soinside.com 2019 - 2024. All rights reserved.