OwnID是一个第三方生物识别认证服务,通过设备的指纹或人脸识别进行登录认证,代替传统的密码认证。
登录认证流程如下
- 在登录页输入邮箱生成登录二维码
- 使用iPhone扫描二维码并浏览器打开OwnID网站
- 调用iPhone的生物识别功能通过认证生成ownid
- 通过邮箱获取应用保存的ownid数据,对比两个ownid
- 如果ownid数据为空(新用户)
- 进行邮箱验证
- 更新应用保存的ownid
- 完成认证
- 如果扫码手机ownid与原保存的ownid不符(换了手机)
- 进行邮箱验证
- 更新应用保存的ownid
- 完成认证
- 如果扫码手机ownid与原保存的ownid一致
- 完成认证
- 如果ownid数据为空(新用户)
注册流程如下
- 在登录页输入邮箱生成登录二维码
- 使用iPhone扫描二维码并浏览器打开OwnID网站
- 调用iPhone的生物识别功能通过认证生成ownid
- 通过邮箱获取应用保存的ownid数据,应用返回无该用户
- 生成随机密码填入密码区域(OwnID流程中断)
- 进行正常用户名密码的注册流程
OwnID有一个问题就是注册时不需要验证邮箱,但是下次登录再次使用OwnID时就需要验证邮箱
Laravel接入流程
OwnID有一个处理从getSessionByLoginId接口获取token的事件,在这个事件里可以把users表里的remember_token存到cookies里,这样当登录跳转的时候,就可以在Controllers里通过cookies里保存的remember_token来认证用户权限
下面是一个简单的示例,通过token鉴权,拿到userID后,可以直接通过Auth::loginUsingId认证用户,最后再刷新下session。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
... use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Auth; ... $user = DB::table('users') ->where('remember_token', $data['token']) ->first(); if (isset($user)) { Auth::loginUsingId($user->id, true); $request->session()->regenerate(); } ... |
另外因为laravel有csrf跨域安全机制,所以还需要在VerifyCsrfToken中间件中把OwnID访问的接口路径给排除一下,否则OwnID没办法post数据到接口。
There are no comments yet