Code Monkey home page Code Monkey logo

product-design's Introduction

product-design

产品设计、需求分析、roadmap等材料

product-design's People

Contributors

bjwswang avatar agilebot1 avatar abirdcfly avatar nkwangleigit avatar 0xff-dev avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar yangqian avatar JN avatar

product-design's Issues

扩展IAM与单独定义区块链Identity对比

目前提供了两个形式,让平台用户接入到区块链。

  • 扩展IAM用户
  • 在区块链这边自定义一个Identify与IAM用户做映射,包含一些扩展信息。

扩展IAM用户

该做法是对IAM服务定义的用户CRD的spec部分做扩展

type UserSpec struct {
   ExternalConf ExternalConf `json:"externalConf,omitempty"`
}

type  ExternalConf struct {
    Type string
   Conf map[string]interface{}
}

这样能够做到支持用户加入到多个组织,在不组织可以有不同的身份。
但是,用户有enroll,revoke动作,这个动作在不使用额外的controller,就需要iam的user controller增加逻辑去完成相关动作,或者就是让对接者在实现一个服务A,用来做revoke和enroll的动作,那这就需要服务A与 iam 的user controller 之间定义通信协议。
完成以上两种动作执行,都需要一定程度对iam进行改造。有一定的侵入性。

自定义Identify

这种方案就是,区块链这边自定义一个Identity与iam的User映射。
在用户开通区块链服务,或者加入到某个组织的时候,区块链这边创建Identify,如果已经存在则对某些属性进行更新。
需要实现一个controller,观察identify的变动,另一方面,就是实现区块链所需要的各种动作。
那其实,fabric-ca与iam的对接就变成了fabric-ca能够支持查询,操作集群里的用户信息,

改动

考虑到最小侵入性,目前不改动IAM的用户定义,以及其controller。而是直接定义Identity CRD。
具体fabric-ca对接用户部分,以及区块链identify controller的实现,后面会更新相关文档,目前需要知道的改动点

  • 让fabric-ca类似数据库的实现一样,实现介入Identify用户
  • 对于接入的identify用户,目前可以先做到revoke,register,enroll,其他的动作后续慢慢支持。
  • controller部分要根据,要实现enroll,revoke,register的调用
  • CA初始化的时候,要创建一个bootstrap的身份, 拥有是Client角色,但是拥有identity管理权限。后续用来完成Admin和client用户的register。

CA-IAM研发

CA-IAM

目的:实现IAM与CA用户体系的统一

集成方案

  1. IAM User支持配置并返回Annotations
apiVersion: v1
kind: User
metadata:
  name: org0admin
  namespace: org0
  annotations:
    - "fabric": "xxx" # Base64 encoded json

fabric内容:

    {
        "hf.EnrollmentID": "user1",
        "hf.Type": "admin",
        "hf.Affiliation": "",
        "hf.Registrar.Roles": "*",
        "hf.Registrar.DelegateRoles": "*",
        "hf.Revoker": "true",
        "hf.IntermediateCA": "ture",
        "hf.GenCRL": "true",
        "hf.Registrar.Attributes": "*"
    }
  1. CA集成IAM认证体系

1) CA用户管理(IAM)

  • 新增
  • 删除
  • 更新

2) CA证书颁发

  • CA仅开通enroll能力

第一步: 通过IAM账户的Token,向IAM认证查询用户信息。返回:

    {
        "name": "org0admin", // 用户名
        "annotations":{
            "fabric": "xxx"
        }
    }

第二步: 将annotation转化为CA可识别的属性

第三步: CA颁发证书

BAAS服务开通流程

用户A开通服务

  1. 用户申请IAM账号

  2. 用户开通BAAS服务

  • 更新IAM账号信息,增加annotations,配置为hf.Type: admin
  1. 为用户部署CA
  • 配置CA启用IAM组件

用户A添加用户B

  1. 用户B开通IAM账号

  2. 为用户更新annotations,配置为hf.Type: client

用户获取证书

  1. 用户登录平台,获得IAM Token

  2. 用户获取CA信息

  3. 用户通过IAM Token向CA发起enroll请求

开发任务拆解

  1. 测试IAM账户新建,并更新annotations

  2. 测试IAM账户登录,获得Token

  3. 测试IAM账户登录,通过Token查询用户个人信息(包含annotations)

  4. CA集成IAMAuth,通过token查询用户信息

  5. CA研发IAM Converter,支持annotatinsca attributes的转化

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.