【Django用户认证】通过阿里云如何实现实名认证


前言

我最近在我的项目上有实名认证的需求,主要实现人名和身份证号码的验证,针对这一块具体怎么做的文章比较少,我解决问题之后,觉得还是把这些坑都写清楚,方便初学者。

前世今生

网络并非法外之地。然而,却存在部分网络用户利用虚拟的网络空间,实施网络暴力、造谣诽谤、购买水军、传播违法侵权视频图片等行为,严重侵害了他人的合法权益与社会公共利益。为治理网络不良现象,净化网络空间,中国相关政府主管部门采用以网络用户实名认证为基础的网络实名制的管理方式,2015年3月1日生效的《互联网用户账号名称管理规定》强调“互联网信息服务提供者应当按照“后台实名、前台自愿”的原则,要求互联网信息服务使用者通过真实身份信息认证后注册账号。”自此,对互联网信息服务提供者明确了“后台实名、前台自愿”的实名认证原则。知

实践中,目前存在以下四种主流的实名认证方式:

1、基于手机号的实名认证方式。这是最简单、最基本的实名认证方式。指互联网平台运营者通过收集用户的实名认证的手机号并转给第三方服务商,由第三方服务商向用户发送验证码,如果用户输入验证码一致,则证明用户是在使用已经实名认证的手机号注册。

2、基于第三方应用接口的实名认证方式。指互联网平台运营者提供用户从第三方应用接口注册登录方式,例如微信、支付宝等接口登录,以获得第三方的相关实名认证信息。

3、基于身份证实名认证方式。在此种模式下,根据对于实名认证信息真实性的要求不同,与第三方身份验证服务商合作,通过收集二要素(姓名和身份证号码)、三要素(姓名、身份证号码、银行卡)、四要素(姓名、身份证号码、银行卡、手机预留号码)等信息进行实名认证。

4、基于视频活体检测实人认证方式。如果说实名认证是为了证明注册某账号使用的身份信息是真实的,那么实人认证就是为了证明持证者本人在使用此账号,通常会采用活体检测、人脸识别等方式,多用于金融机构(如支付宝)、政府机构(如随申办、交管12123)、网络游戏未成年人防沉迷系统等。

上述四种实名认证方式所需要的个人信息以及实名认证的准确性依次递增,一般而言,APP运营者通过“基于手机号的实名认证方式”即满足了最基本的实名认证要求,如APP所处行业类型需要遵守更加严格的安全要求,亦可增加更加准确的实名认证方式。

场景

场景一:用户实名注册

在很多网站或app里实现在线刷脸实名认证,可以有效防止冒名开户,减少用户现场开户的时间成本,提高服务效率。

场景二:身份验证

在保险行业,由于被保人因为年龄、疾病等原因无法由本人办理业务时,可以调用增强版实人认证服务,确定参保人的真实身份和存活状态。

基本概念

实名认证主要分为实名认证二三四要素,二要素就是身份证、姓名. 三要素就是身份证、姓名、银行卡号. 四要素就是身份证、姓名、银行卡号、手机号. 此外还有身份证,姓名、银行卡号,手机号,CVV2,EXP的六要素验证。我这里介绍的都是以阿里云平台上的二要素验证方案。

相关法律

《网络安全法》第四十三条规定,网络运营者应按照法律、行政法规的规定和与用户的约定,收集使用个人信息。 据此规定,以实名认证为由收集的个人信息不应用于其他用途,在使用实名认证接口服务时,不得私自截留、存储此部分信息。
《互联网用户账号信息管理规定》第九条规定,公众账号信息服务平台对申请注册从事经济、教育、医疗卫生、司法等领域信息内容生产的公众账号,应当要求用户在注册时提供其专业背景,以及依照法律、行政法规获得的职业资格或者服务资质等相关材料,并进行必要核验。


提示:以下是本篇文章正文内容,下面案例可供参考

一、实名二要素

实名二要素也有叫做身份证二要素

(一)阿里云云市场-三方公司

此处以云市场其中一个为例。

1.链接

https://market.aliyun.com/products/57000002/cmapi025518.html

2.参数

参数包括AppCode以及名字和号码,AppCode是在云视窗控制台获得。
在这里插入图片描述

3.示例

import json
import requests
host = 'https://idenauthen.market.alicloudapi.com'
path = '/idenAuthentication'
method = 'POST'
appcode = ''  # 你自己的AppCode
querys = ''
bodys = {}
url = host + path

bodys['idNo'] = '13028********058' #身份证号码
bodys['name'] = '李四' # 名字

post_data = json.dumps(bodys)  #
headers = {
    'Authorization': 'APPCODE ' + appcode,
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
}
request = requests.post(url=url, headers=headers, data=bodys)
print(request.json())

(二)阿里云服务-API接口

1.链接

https://help.aliyun.com/document_detail/190145.html

2.准备

需要企业账户,开通增强版实人认证,在控制台创建认证场景,才能获得认证场景ID。即SceneId参数。

3.参数

在使用参数时,实际使用是以Mode模式来传递不同的参数。
Mode模式为VERIFY_ID_NAME,就是使用名字和号码验证,应该使用以下参数:

{
	'SceneId':'2中获取的认证场景id',
	'OuterOrderNo':'OuterOrderNo', # 商户请求的唯一标识
	'Mode':'VERIFY_ID_NAME',  # 二要素认证需要VERIFY_ID_NAME模式
	'CertType':'IDENTITY_CARD',
	'CertName':'张三', # 姓名
	'CertNo':'330103xxxxxxxxxxxx', # 身份证号码
}

Mode模式为OCR_ID,就是使用身份证照片,应该使用以下参数:

{
	'SceneId':'2中获取的认证场景id',
	'OuterOrderNo':'OuterOrderNo', # 商户请求的唯一标识
	'Mode':'OCR_ID',  # 二要素认证需要VERIFY_ID_NAME模式
	'CertType':'IDENTITY_CARD',
	'CertUrl':'https://www.aliyun.com/cert.jpeg', # 照片的url
}

Mode模式为OCR_VERIFY_ID_NAME,就是使用身份证照片,同时输入名字和号码,应该使用以下参数:

{
	'SceneId':'2中获取的认证场景id',
	'OuterOrderNo':'OuterOrderNo', # 商户请求的唯一标识
	'Mode':'OCR_VERIFY_ID_NAME',  # 二要素认证需要VERIFY_ID_NAME模式
	'CertType':'IDENTITY_CARD',
	'CertName':'张三', # 姓名
	'CertNo':'330103xxxxxxxxxxxx', # 身份证号码
	'CertUrl':'https://www.aliyun.com/cert.jpeg', # 照片的url
}

在这里插入图片描述

4.计费

在这里插入图片描述

总结

本次实现的是实名二要素验证,其他要素验证未做说明,希望通过参考本章内容对您有所帮助。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Django提供了内置的用户认证和权限管理功能,可以方便地实现用户注册、登录、注销以及不同用户角色的权限管理。下面是一些常用的Django用户认证和权限管理的功能和方法: 1. 用户注册: - 创建一个注册视图函数,接收用户提交的注册信息,并进行表单验证。 - 使用Django的内置User模型创建用户,并保存到数据库中。 2. 用户登录: - 创建一个登录视图函数,接收用户提交的登录信息,并进行表单验证。 - 使用Django的`authenticate()`函数验证用户用户名和密码是否匹配。 - 使用Django的`login()`函数将用户登录状态保存到会话中。 3. 用户注销: - 创建一个注销视图函数,调用Django的`logout()`函数注销当前用户。 4. 访问控制: - 使用Django的`@login_required`装饰器,限制只有登录用户才能访问特定页面或执行特定操作。 - 使用Django的`@permission_required`装饰器,限制只有具备特定权限的用户才能访问。 5. 用户角色和权限管理: - 使用Django的内置Group模型,创建不同的用户组或角色。 - 将用户添加到相应的用户组中,实现不同权限的分配。 - 使用Django的`@group_required`装饰器,限制只有属于特定用户组的用户才能访问。 6. 自定义权限: - 使用Django的内置Permission模型,创建自定义的权限。 - 将权限分配给用户组或用户。 7. 表单验证: - 使用Django的内置表单验证功能,确保用户输入的数据符合要求。 8. 记住登录状态: - 使用Django的`SESSION_COOKIE_AGE`设置会话cookie的过期时间,以保持用户的登录状态。 以上是一些常用的Django用户认证和权限管理的功能和方法。通过使用这些功能和方法,可以轻松实现用户认证和权限管理的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我辈李想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值