FIPA7V1_授权登录(zh-CN)



  • FIPA7: 授权登录
    Version: 1
    Language: zh-CN
    Author: master_wang, C_armX, Deisler-JJ_Sboy
    Status: draft
    Created date: 2021-05-30
    Last modified date:2021-05-30
    File hash: unknown
    Txid: Unpublished
    

    FIPA7V1_授权登录(zh-CN)

    目录

    简介

    FIPA协议约定

    本协议约定

    同设备交互登录场景

    不同设备二维码扫描登录场景

    数据结构

    登录请求应用验证

    简介

    
    Protocol type: FIPA
    Serial number: 7
    Protocol name: 授权登录
    Version: 1
    Description : 私钥管理的应用为其他应用提供授权登录服务。
    Author: master_wang, C_armX, Deisler-JJ_Sboy
    Language: zh-CN
    Tags: FIPA, 签名,登录
    PreVersion hash:
    
    

    FIPA协议约定

    FIPA协议规定不需要Freecash主网硬分叉升级即可实施,并且不涉及主链数据或分布式存储数据格式的改进协议。

    本协议约定

    1. 本协议约定私钥管理应用为其他应用授权登录的方式和数据格式;

    2. “私钥管理应用”指管理用户私钥,为其他应用提供授权登录服务的应用。“登录请求应用”指发出申请,验证用户登录信息的应用。

    3. 授权方式包括:1)同一设备应用间授权登录;2)不同设备上的应用间通过二维码授权登录;

    同一设备应用间授权登录

    登录请求应用私钥管理应用在同一设备时,直接在设备内交互信息完成登录。

    流程图

    未命名文件(14).png

    流程说明

    1. 用户在登录请求应用填写登录信息,即CID或FCH地址;
    2. 登录请求应用构造登录数据,其中user.signature为空;
    3. 登录请求应用唤醒私钥管理应用,并提交登录数据;
    4. 私钥管理应用验证登录数据的签名和登录请求应用身份,参见登录请求应用的身份验证;
    5. 私钥管理应用验证成功则展示待签名信息给用户,验证失败则返回错误信息给登录请求应用,参见返回错误;
    6. 用户审查私钥登录应用的签名提示,内容无误后确认签名;
    7. 私钥管理应用接到用户确认后使用相应私钥签名登录数据;
    8. 私钥管理应用添加user.signature值后将登录数据返回给登录请求应用;
    9. 登录请求应用收到登录数据进行验证,成功则准许登录,失败则提示用户登录失败。

    不同设备二维码扫描登录场景

    一台设备的登录请求应用展示登录信息二维码,私钥管理应用从另一台设备扫描该二维码,验证后完成签名登录。

    流程图

    未命名文件(12).png

    流程说明

    1. 用户在登录请求应用填写登录信息,即CID或FCH地址;
    2. 登录请求应用构造登录数据,其中user.signature为空,参见登录数据;
    3. 登录请求应用构造二维码,包含:1)登录数据url 和 2)确认登录url。参见二维码数据格式;
    4. 用户启动私钥管理应用,扫描上述二维码;
    5. 私钥管理应用验证登录数据的签名和请求者身份,参见登录请求应用的身份验证;
    6. 私钥管理应用验证成功则展示待签名信息给用户,验证失败则返回错误信息给登录请求应用,参见返回错误;
    7. 用户审查私钥登录应用的签名提示,内容无误后确认签名;
    8. 私钥管理应用接到用户确认后使用相应私钥签名登录数据;
    9. 私钥管理应用添加user.signature后,将登录数据通过确认登录url传递给登录请求应用;
    10. 登录请求应用收到登录数据进行验证,成功则准许登录,失败则提示用户登录失败。

    数据结构

    登录数据

    字段名 类型 说明 备注
    message object 消息体
    message.requester string 请求者 cid、sid(服务)或url
    message.operation string 操作请求:"login"
    message.timestamp timestamp 申请登录时间戳 Unix time格式
    message.parameter object 操作参数 登录应用自定义
    app object 登录应用签名区域
    app.address string 登录应用地址
    app.signature string 登录应用签名 请求方私钥对message的值签名
    user object 用户签名区域
    user.address string 用户地址
    user.signature string 用户签名 用户私钥对message的值签名

    json示例

    {
    	"message": {
    		"requester": "[cid, sid or url]",
    		"operation": "login",
    		"timestamp": [unix timestamp],
    		"params": {[由登录请求应用自定义]} 
    	},
    	"app": {
    		"address": "[FCH address of the app]",
    		"signature": "[signature of message signed by the private key of the address]"
    	},
    	"user": {
    		"address": "[FCH address of the user]",
    		"signature": "[对message的值的签名]"
    	}
    }
    
    

    返回错误

    {
        "errorCode":[int, 为0表示成功,非0表示失败], 
        "errorMessage":"[字符串,当errorCode非0时,标识失败原因]" 
    }
    

    二维码数据

    {
        "type": "FIPA", 
        "sn": 7,
        "ver": 1,
        "data": {
        "op": "login", # 表明此二维码数据用于传递登录信息
        "dataUrl": "[获取登录数据的url]", 
        "confUrl": "[返回确认登录信息的url]" 
        }
    }
    

    登录请求应用的身份验证

    1. 三种登录申请
      requstor指的是登录请求应用,分为三类:
    • CID:应用在链上注册的CID或其链上授权的CID;
    • SID:某CID在链上发布的服务的id,即发布该服务的交易id,参见FEIP29V1_Service;
    • URL:其他互联网来源。
    1. 私钥管理应用验证登录请求应用的身份

    私钥管理应用收到前且登录请求时,应当验证签名是否正确,并且验证“requester”信息与“app”的签名信息是否一致:

    • requester为CID时,验证CID对应地址应与app.address是否一致;
    • requester为SID时,验证SID的发布地址应与app.address是否一致;
    • requester为url时,则该url应在可信方绑定了FCH地址或CID,并与app.address一致。

Log in to reply