0

此问题与 ServiceStack OAuth 身份验证流程有关。调试 FacebookAuthProvider 我看到如果代码参数不为空(从重定向到 Facebook 对话框 url 获得),它使用它来获取访问令牌。AuthProvider 对 OAuthAuthorizer 执行相同的操作。

如何使用 Javascript SDK 获取单页应用程序的访问令牌(在弹出窗口中使用模式,没有重定向)。是否有任何端点可以通过颁发的访问令牌对用户进行身份验证?

另外,您认为这是一个安全漏洞吗?我相信,如果用户首先使用 Credentials Provider 签名,然后使用 OAuth Provider 签名,ServiceStack 会创建两个独立的帐户。如果服务器使用 Facebook API 验证访问令牌并返回有效响应,我认为应该可以在应用程序中签署已经存在的用户(我想寻找任何 AuthUserDetails 提供等于facebook应该足以信任)。

4

1 回答 1

1

FacebookAuthProvider遵循与所有其他 OAuth 提供程序相同的 OAuth 提供程序流程,该流程重定向到远程 OAuth 站点以捕获用户授权,然后使用 AuthProvider 用于检索用户的 access_token 的代码进行重定向。内置的 AuthProvider 都不依赖于任何 JavaScript SDK。

ServiceStack 不会创建 2 个单独的用户帐户,它会创建 1 个用户帐户,该用户帐户与他们在通过身份验证时进行身份验证的每个 AuthProvider 相关联。然后,用户可以使用他们之前进行身份验证的任何身份验证提供程序进行身份验证,以登录到他们的帐户。

只有当用户在通过 Facebook 进行身份验证时尚未通过身份验证时,才会创建一个单独的用户帐户。但它只会在没有使用同一电子邮件注册的现有 UserAccount 时创建新帐户,否则它将失败并出现EmailAlreadyExists错误。如果创建了单独的用户帐户,它们将被视为 2 个未链接的单独帐户(即具有不同的 UserAuthId),在这种情况下,使用任一 Auth Provider 进行身份验证将登录到 2 个不同的用户帐户。

于 2016-03-01T04:57:24.713 回答