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

文章目录

  • 前言
  • 前世今生
  • 场景
  • 基本概念
  • 相关法律
  • 一、实名二要素
    • (一)阿里云云市场-三方公司
      • 1.链接
      • 2.参数
      • 3.示例
    • (二)阿里云服务-API接口
      • 1.链接
      • 2.准备
      • 3.参数
      • 4.计费
  • 总结


前言

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

前世今生

网络并非法外之地。然而,却存在部分网络用户利用虚拟的网络空间,实施网络暴力、造谣诽谤、购买水军、传播违法侵权视频图片等行为,严重侵害了他人的合法权益与社会公共利益。为治理网络不良现象,净化网络空间,中国相关政府主管部门采用以网络用户实名认证为基础的网络实名制的管理方式,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是在云视窗控制台获得。
【Django用户认证】通过阿里云如何实现实名认证_第1张图片

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
}

【Django用户认证】通过阿里云如何实现实名认证_第2张图片

4.计费

【Django用户认证】通过阿里云如何实现实名认证_第3张图片

总结

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

你可能感兴趣的:(Django开始入门,阿里云,服务器,运维)