哪种Oauth流适合使用javascript SPA进行令牌身份验证

哪种Oauth流适合使用javascript SPA进行令牌身份验证,oauth,single-sign-on,token,single-page-application,Oauth,Single Sign On,Token,Single Page Application,-我在javascipt中有一个SPA应用程序 -webapi服务.net -同一项目.net中的令牌服务 问题1 Spa应用程序使用grant_类型密码向令牌端点发出ajax请求。作为回报,它回来了 保存在localstorage中并稍后用于验证webapi的令牌。 1.这是SPA身份验证的正确方法吗? 2.密码授予类型正确吗?或者我需要使用其他一些流来确保它的安全。在oauth文档中,不应该使用它。 3我担心令牌的安全性,因为它可以被复制和粘贴。如何保护它 问题2 使用令牌服务的自定义SSO

-我在javascipt中有一个SPA应用程序
-webapi服务.net -同一项目.net中的令牌服务

问题1

Spa应用程序使用grant_类型密码向令牌端点发出ajax请求。作为回报,它回来了 保存在localstorage中并稍后用于验证webapi的令牌。 1.这是SPA身份验证的正确方法吗? 2.密码授予类型正确吗?或者我需要使用其他一些流来确保它的安全。在oauth文档中,不应该使用它。 3我担心令牌的安全性,因为它可以被复制和粘贴。如何保护它

问题2 使用令牌服务的自定义SSO

现在我有了另一个使用相同架构的应用程序。与应用程序A和B一样,使用相同的体系结构。我想 使用应用程序A的令牌服务向应用程序B发出令牌以登录到应用程序B

A向应用程序B颁发的令牌可以解密,我可以创建用户身份。现在我们如何登录到应用程序B 因为它也遵循基于令牌的方法。因此,我应该在这里通过创建新的本地accesstoken登录到应用程序B吗 使用应用程序A发出的令牌中的信息自行发出

  • 这是SPA身份验证的正确方法吗?2.密码授予类型正确吗?或者我需要使用其他一些流来确保它的安全。在oauth文档中,不应该使用它
  • 在开发您自己的应用程序时,使用资源所有者密码凭据授权是可以的,但在第三方客户端应用程序中使用OAuth2时,它会破坏OAuth2的全部用途,因为这是用户密码直接暴露给客户端应用程序的唯一流程(这违反了最小特权原则)

    您可以考虑使用授权代码或隐式流,但是它不一定是“更安全的”,并且常常被人们认为是一个简单的“令牌替代”来进行密码验证。 3我担心令牌的安全性,因为它可以被复制和粘贴。如何保护它

    由于您正在开发JS应用程序,用户可以直接访问承载令牌。对此你无能为力(它与cookie的安全级别类似,用户可以轻松地将其复制并移动到不同的环境中)

    为了保护访问/刷新令牌免受远程攻击者的攻击,您所能做的就是确保您的JS应用程序不受XSS漏洞的影响,这将允许窃取它们或代表用户进行恶意API调用


    所以在这里,我应该通过使用应用程序a发出的令牌中的信息创建一个新的本地accesstoken来登录到应用程序B

    SSO不会真正与非交互流(如资源所有者密码凭据授予)一起工作,因为用户未在此流中登录到授权服务器(即,在发出
    grant\u type=password
    请求时,不会创建会话cookie)


    您应该考虑建立一个支持授权流或隐式流的交互式授权的中央授权/认证服务器来支持这个方案。非常感谢您在这方面的帮助。当我登录到Authenization server时,我希望同时登录到所有应用程序。像应用程序A、B和C。在登录时,我想从所有应用程序中获取数据,并在应用程序A中显示它们。关于如何使用oauth或openid实现这一点的任何提示