使用Ory/Kratos登录/注册API流程



在文档中,有一个大的亮红色警告:

永远不要使用API流来实现浏览器应用程序!

在单页应用程序和服务器端应用程序中使用API流会打开几个潜在的攻击向量,包括登录和其他CSRF攻击。

文档没有详细说明这些攻击是什么。如果我通过在服务器上存储会话数据、只允许服务器访问此API以及实现我自己的csrf保护来正确地保护我的应用程序,我是否安全?如果没有,我会面临什么样的攻击?我应该采取什么额外措施?

当然,必须有一种方法来保护我的应用程序,而不必拆除正在运行的JavaScriptvm,然后依次重定向三次,只为查看登录/注册页面。对于现代应用程序,我认为用户可能会期望这种不连续的过渡来成功进行身份验证,但我不认为仅仅查看登录/注册页面就一定会期望这种过渡。

使用奎托斯有两种方法。

From a WebApp (browser)
From a Native app (iOS, Android...)

第一种方法是使用浏览器重定向,它们设置csrf令牌。

第二种方法不设置csrf令牌,因为不涉及浏览器。

这就是为什么有一个警告说;浏览器";相关应用程序永远不应该使用来自本机应用程序流的方法,反之亦然!

例如,以下是如何初始化API客户端(本地应用程序(的登录流

https://www.ory.sh/kratos/docs/reference/api#initialize-api客户端的登录流

下面是一个如何初始化浏览器客户端的登录流的示例

https://www.ory.sh/kratos/docs/reference/api#initialize-浏览器的登录流程

自助服务配置用于浏览器重定向流(因此浏览器客户端也是如此(。

这个答案的所有功劳都归于https://github.com/Benehiko.

有关警告的更多详细信息,请访问kratos频道。

最新更新