socialauth - 你可以在一个重定向使用同一个会话?(socialauth - can y

2019-09-22 05:13发布

我试图用socialauth与谷歌,Facebook等人登陆(我假设谷歌在这里),并有一个关于它是如何工作的问题。 我使用JSF 2无接缝。 其基本思想是,你:

  • 让表示要与谷歌登录几个API调用。

  • 再拍API调用,它返回一个网址为谷歌。

  • 供应将由谷歌可以使用回重定向到您的网站结果的URL。

  • 重定向到URL谷歌。

  • 那么谷歌将可以立即重定向到您的网站或事先征得登录详细信息。

我的困惑是有关数据从出站和入站两侧连接在一起。 在入门页面(上面链接),他们认为这样的:

出站

SocialAuthManager manager = new SocialAuthManager();
String successUrl = "http://my.domain.com/socialauthd/successAction.xhtml";
String url = manager.getAuthenticationUrl(id, successUrl);
// Store in session
session.setAttribute("authManager", manager);

入站

// get the auth provider manager from session
SocialAuthManager manager = (SocialAuthManager)session.getAttribute("authManager");

我的问题是,我不明白这是如何工作的,以及它在测试中没有。 他们建议存储在会话的SocialAuthManager的实例的引用,但是当从谷歌新的会话创建接收到的请求。 它不具有JSESSIONID cookie,并因此不发送摆在首位,以谷歌请求的会话的一部分。

要解决此我从socialauth API独特的每个请求ID(openid.assoc_handle - 它发来的查询参数),把它放在一个ConcurrentHashMap中范围的bean的应用程序,并检索在一个preRenderView听众参考完成页面(successUrl - 在本例严重命名因为它是所谓无论哪种方式)。

这一切都似乎是一些很多麻烦的是不包括文档。 我已经与@RequestScoped CDI豆试过,但我通常使用CODI @ViewAccessScoped。 随着CODI我试着加入WINDOWID的成功URL,并且还加入了JSESSIONID cookie来重定向,但是没有办法工作。 我不认为这个bean范围有关,但更多的信息越好。

我可以潜入春天,缝和支柱的例子,但对于纯EE 6开发者这是一个很大的开销,并更好地了解这个问题,我可以制作一个简单的,工作的,JSF唯一的例子,我将提供给socialauth团队对谷歌代码中使用。

我失去了一些东西明显或者这是否只是很复杂? 如果是这样,为什么他们的文件,根本无法正常工作的方法?

编辑:我认为successUrl可能更适当命名的比我想象的,因为在与雅虎的测试中,我认识到,除非提供正确的登录细节,你将不会被重定向回您自己的网站。 我希望这是所有供应商相同。 我加入了对此解决socialauth网站的一些意见,并且还一个问题我登录这个问题(两者都没有收到参与socialauth项目任何人任何响应)。

Answer 1:

包括jsessionid回调URL路径参数。

String successUrl = "http://my.domain.com/socialauthd/successAction.xhtml"
    + ";jsessionid=" + session.getId();

请注意,这是不特定于JSF API,但Servlet API的 (章7.1.3,URL重写)。



文章来源: socialauth - can you use same session across a redirect?