java - SSO OAuth2Authentication session 和服务器端 http 请求

标签 java http cookies language-agnostic single-sign-on

我对向实现相同 SSO 身份验证的 Web 服务器发出服务器端 http 请求的机会很感兴趣。

所以假设我有:hello.orghey.com 指向同一个 SSO 服务器。 登录 hello.org 后,我获得了:

OAuth2Authentication authenticationObject = (OAuth2Authentication) principal; 

现在我想将 http 请求从 hello.org 服务器发送到 hey.com

Request.Get("hey.com/get_data").execute().returnContent().asString(); 

但是我遇到了身份验证错误代码 401。

如何从 OAuth 对象中检索所有必需的 token 并使我的请求得到验证?

最佳答案

站点 hello.org 不应使用提供给调用 hello.org 的客户端的 token 来调用 hey.com。该 token 将被视为经过身份验证的用户与 hello.org 之间的契约(Contract)。

hello.org 服务器需要它自己的客户端,该客户端被授权访问 hey.com。

因此,解决此问题的一种常见方法是创建一个“hello.org 到 hey.com”的客户端,使用针对 sso 提供商的 key 或证书身份验证,然后使用那里提供的 token 调用 hey.com,然后中继将信息返回给 hello.org 的用户。

现在,如果您想通过 hello.org 调用 hey.com,而用户不知道 hey.com 曾参与信息提供。

另一方面,如果您想让用户通过 hello.org 登录来访问 hello.org 和 hey.com,您应该检查 OpenId 或 SAML,因为基本的 Oauth 并不是真正为 SSO 设计的,或者资源共享。

关于java - SSO OAuth2Authentication session 和服务器端 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40181271/

相关文章:

javascript - jQuery - 使用删除图像从数组中删除 li

angular - 使用哪个,Session、Cookies、服务器端数据?

java - USACO 培训 : Mixing Milk fails on the last Case

Java 在 ^ 上拆分(插入符号?)不起作用,这是一个特殊字符吗?

java - 在 Java 应用程序中导入/导出 Google 联系人

javascript - Electron JS : Renderer can't resolve module require ("./index.js") over HTTP

c# - 在没有 asp 的情况下,在创建新 cookie 之前检查声明(电子邮件)。使用 asp net 核心社交登录的核心身份存储

java - Gradle构建在 list 中声明了一个新的Activity,但没有名称,从而产生了一个错误

Python 从 HTTP 响应中提取 JSON

c# - 页面源码怎么能省略某些东西