客户端如何获得http-bearer令牌?

时间:2013-10-14 15:20:45

标签: authentication oauth-2.0 cross-domain client oauth2client

我有一个单页应用,目前为OAuth2身份验证提供商打开一个标签。用户输入其凭据后,服务器会发送一个响应,该响应将关闭该选项卡。 服务器通过在其上设置会话来“知道”客户端现在已经过身份验证。

但是,我实际上不想使用会话。我想保持应用程序无状态。我读到这应该可以通过使用服务器可以验证的oauth2承载令牌来实现。

客户如何获得此类持票令牌?当我使用iframe或标签以便用户可以在服务提供商的登录页面输入他们的凭证时,我的javascript永远不会收到回复。

使用Web中的当前客户端 - 服务器架构,OAuth2与外部提供程序(没有会话)是不是不可能?

1 个答案:

答案 0 :(得分:1)

您可能正在考虑使用“Json Web Tokens”而不是常规的“访问令牌”。 JWT是经过数字签名的工件,因此服务器(您的API)可以验证它们(及其内容)。

单页应用通常使用OAuth2“隐式”流程。令牌(JWT)直接从授权服务器接收,您可以使用它来对API进行身份验证。客户端库将从最终响应中提取JWT(通常在表单的URL中为http://callback/#id_token={the base64 encoded token}

您需要检查您使用的AuthZ服务器是否可以实际返回JWT,并且您需要在托管API的服务器中包含可以验证它们的令牌处理程序。

  

注意:如果网页和API位于不同的域中,您还需要配置CORS。

请查看this example,使用.NET WebApi和返回JWT的授权服务器(示例中为ours,但可以与任何人合作)。