d3/oxid-twofactor-passwordless

OXID eShop 无密码登录(基于 Webauthn / FIDO2)

安装: 3

依赖: 0

建议者: 2

安全: 0

星星: 0

关注者: 4

分支: 0

公开问题: 0

类型:oxideshop-module

1.0.0.0 2023-05-26 07:37 UTC

This package is auto-updated.

Last update: 2024-09-05 23:54:27 UTC


README

deutsche Version english version

OXID eShop 无密码登录

Passwortloses Anmelden für OXID eShop

此模块允许使用基于硬件的登录密钥(基于 WebAuthn / FIDO2 的 passkey)而不是密码进行 OXID 商店的登录。

这样可以确保前端登录的安全性,以及在用户允许的情况下后端登录的安全性。

登录密钥来自包含加密密钥的设备。这些密钥可以用于双因素认证。登录密钥设备必须支持 "WebAuthn" 标准。

密钥管理在管理员区域以及用户的“我的账户”中完成。

目录

什么是 FIDO2?

它通过浏览器实现用户在基于 Web 的用户界面中的安全认证。而不是使用密码(“知识”因素),而是使用特殊硬件登录,该硬件使用强公钥密码学进行验证(“拥有”因素)。FIDO2 登录不能通过实施方式被钓鱼攻击捕获。

FIDO2 描述了整个认证过程,WebAuthn 和 CTAP 是该过程的子集。CTAP 是从 FIDO2 设备到客户端/浏览器的通信。WebAuthn 负责从浏览器到应用的传输(商店)。

以下任何 FIDO2 认证硬件都可以用于登录

  • 跨平台认证器(设备无关)
    • USB令牌(例如 SolokeyYubiKey),
    • NFC发送器
    • 蓝牙发送器
    • 智能卡
  • 平台认证器(设备相关)
    • 面部识别设备
    • Windows Hello 设备
  • 混合认证器
    • 具有 Touch ID 的智能手机(Android 版本 7 及以上,iOS 版本 14 及以上),

FIDO2 可以用作

  • 作为现有用户名-密码组合的第二个因素
  • 作为密码的安全替代品(无密码,但仍需输入用户名)
  • 作为用户名和密码的完整替代品(在 FIDO2 设备中存储登录数据)

在此模块中,目前实现了无密码登录(第二个选项)。对于第一个选项,我们认为与第二个选项相比安全增益较低。第三个选项在技术上可行,但对于普通使用场景来说不太相关且技术复杂。如有需要,我们很乐意回答相关问题。

在注册 FIDO2 密钥时,将创建访问数据,以检查以后的登录尝试。这些访问数据与客户账户和商店绑定,不可相互交换。

系统要求

此包需要安装 Composer 的以下版本的 OXID eShop

  • 6.3.x
  • 6.4.x
  • 6.5.x

及其要求。

默认情况下,支持 Flow 和 Wave 主题。其他主题可能需要调整。

模块安装/更新

打开命令行并导航到商店的根目录(source 和 vendor 的父目录)。执行以下命令。根据您的安装环境调整路径。

composer require d3/oxid-twofactor-passwordless:^1.0

./vendor/bin/oe-eshop-db_migrate migrations:migrate d3webauthn

如果显示关于不兼容的包“symfony/process”的提示,则必须进行更改。请在上面的命令中添加开关 -W... require -W ...)。

在Shopadmin的“扩展 -> 模块”下激活模块。

使用方法

商店账户的开通(如常)通过用户名和密码进行。之后,可以添加FIDO2-密钥作为额外的认证方式。从此时起,商店(前端和后端)的登录可以通过FIDO2或密码进行。两者互不影响。

使用密码的登录方式与商店标准相同,并继续作为备用选项存在。

使用已注册的FIDO2密钥登录时,只需在登录界面留空密码字段。一旦在密码字段中输入至少一个字符,就会被视为使用密码登录。如果密码字段为空,则会检查是否存在密钥注册,并在成功的情况下请求相应的设备。如果没有注册,也会被视为使用密码登录。

可以在前端“我的账户”区域和后端客户账户中轻松管理密钥。管理包括注册新的密钥(每账户可以注册多个密钥,推荐这么做)。每个密钥都可以分配一个自定义名称。此外,所有注册的密钥都会以它们的名称显示。同样,注册的密钥也可以在那里删除。

由于基于FIDO2的登录不再需要密码,因此备份密码可以比日常使用的密码更复杂。

配置

使用的选项

  • 允许平台和跨平台认证器
  • 不定义接口限制(USB、NFC等)
  • 推荐用户验证,但不是必需的
    • 并非所有浏览器都可以请求跨平台认证器的PIN,这些浏览器在用户验证中会被排除
  • 不要求认证
  • 不查询设备上存储的用户数据
  • 超时时间:60秒

所有其他选项均可通过重载进行调整,以满足个别需求。

变更日志

有关更多信息,请参阅CHANGELOG

贡献

如果您有改进建议,请创建存储库的分支并提交拉取请求。或者,您可以直接创建一个问题。将项目添加到您的收藏夹。非常感谢。

  • 创建项目分支
  • 创建功能分支(git checkout -b feature/AmazingFeature)
  • 提交您的更改(git commit -m '添加一些AmazingFeature')
  • 推送分支(git push origin feature/AmazingFeature)
  • 打开拉取请求

许可证

(状态:2022年10月25日)

在GPLv3许可证下分发。

Copyright (c) D3 Data Development (Inh. Thomas Dartsch)

Diese Software wird unter der GNU GENERAL PUBLIC LICENSE Version 3 vertrieben.

有关完整的版权和许可证信息,请参阅与此源代码一起分发的LICENSE文件。

其他许可证和条款

ArrayBuffer到Base64转换的JavaScript [MIT]

https://gist.github.com/jonleighton/958841 - 状态:2022年11月4日)

MIT LICENSE
Copyright 2011 Jon Leighton
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.