我有兴趣向Web服务器提供服务器端http请求,实现相同的SSO身份验证。
假设我有: hello.org 和 hey.com 指向同一个SSO服务器。 登录 hello.org 后,我获得了:
OAuth2Authentication authenticationObject = (OAuth2Authentication) principal;
现在我想将来自 hello.org 服务器的http请求发送到 hey.com
Request.Get("hey.com/get_data").execute().returnContent().asString();
但我点击了身份验证错误代码401.
如何从OAuth对象中检索所有必需的令牌并对我的请求进行身份验证?
答案 0 :(得分:1)
网站hello.org不应该使用提供给客户端调用hello.org的令牌来调用hey.com。该令牌将被视为经过身份验证的用户与hello.org之间的合同。
hello.org服务器需要它自己的客户端,有权访问hey.com。
因此,解决此问题的一种常见方法是使用针对sso提供程序的密钥或证书身份验证创建“hello.org to hey.com”客户端,然后使用其中提供的令牌调用hey.com,然后继续将信息发回给hello.org的用户。
现在,如果您想通过hello.org呼叫hey.com,并且用户不知道hey.com曾参与过信息提供。
另一方面,如果您希望让用户通过hello.org登录访问hello.org和hey.com,您应该检查OpenId或SAML,因为裸骨Oauth并非真正用于SSO或资源共享。