0

我有一个单页应用程序,它当前打开了一个 OAuth2 身份验证提供程序的选项卡。在用户输入他们的凭据后,服务器会发送一个响应,该响应将关闭该选项卡。服务器“知道”客户端现在通过在其上设置会话来进行身份验证。

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

客户端如何获得这样的不记名令牌?当我使用 iframe 或选项卡以便用户可以在服务提供商的登录页面输入他们的凭据时,我的 javascript 永远无法获得响应。

对于 Web 中当前的客户端-服务器架构,具有外部提供者(无会话)的 OAuth2 是否真的不可能?

4

1 回答 1

1

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

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

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

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

看看这个例子,使用 .NET WebApi 和一个返回 JWT 的授权服务器(在例子中是我们的,但可以与任何人一起使用)。

于 2013-10-15T04:50:06.443 回答