|
1
2
在开发自己的应用程序时,使用资源所有者密码凭据授权是很好的,但在与第三方客户机应用程序一起使用OAuth2时,这就违背了OAuth2的整体目的,因为这是唯一一个 用户密码直接向客户端应用程序公开 (这违反了最低特权原则)。 您可以考虑改用授权代码或隐式流,但它不一定“更安全”,而且人们通常认为它是一种过火的做法,因为他们寻找一种简单的“令牌替代方案”来代替密码身份验证。
由于您正在开发JS应用程序,用户可以直接访问持有者令牌。对此你无能为力(它类似于cookie的安全级别,用户自己可以轻松复制并移动到不同的环境)。 为了保护访问/刷新令牌免受远程攻击者的攻击,您所能做的就是确保您的JS应用程序不受XSS漏洞的影响,这将允许窃取令牌或代表用户进行恶意API调用。
SSO实际上无法处理非交互式流,如资源所有者密码凭据授予,因为用户没有登录到此流中的授权服务器(即在创建
您应该考虑设置一个中央授权/身份验证服务器,支持交互式流,如授权代码或隐式流,以支持此场景。 |