@tuia/koa-sso

    1.2.1 • Public • Published

    koa-sso

    用于koa2对接兑吧sso单点登录

    流程介绍

    一般,我们会在自己的服务也实现一套用户系统,然后去支持sso登录

    • 判断用户未登录
    • 跳转sso登录页面http://sso.duiba.com.cn/login并自己拼接systemId参数,redirect参数(登录后需要跳转的地址到)
    • 在sso平台登录,会自动跳转回我们的固定接口'/sso/ssoIndex',并带上ssoStamp参数
    • 在这个接口里,根据ssoStamp去拿ticket通行证,再用ticket去拿sso账户信息。(这个ticket是可以在本地自己存起来的,如后面一直要校验sso信息,可以省略之前步骤直接用ticket去取)
    • sso登录成功,后面就是自己的业务逻辑

    use

    const Koa = require('koa')
    const app = new Koa()
    const koaSso = require('koa-sso')
    
    app.use(koaSso({
      ssourl: 'https://sso.duibatest.com.cn/',
      systemId: 29,
      systemName: 'jimo',
      appSecret: '95cfda1e006330958c2abbefd64d5259',
      profiles: 'test'
    }))
    
    
    /**
     * sso要求本地实现的一个接口,用来对接sso
     */
    const router = require('koa-router')
    router.get('/sso/ssoIndex', async ctx => {
      // 获取通行证
      let ticket = await ctx.sso.findTicketByStamp()
    
      // 获取sso账号信息
      let ssoData = await ctx.sso.verifyTicketAndGetAdmin(ticket)
    
      if (ssoData) {
        // 至此,已获取sso信息,后面只需将用户置为登录状态
        console.log(ssoData.id)
        
        
        /****** 以下根据具体业务场景自己写 ******/
        /****** 例: ******/
        // koa-session 登录
        ctx.session.userId = ssoData.id
        ctx.success('登录成功')
        const params = qs.parse(ctx.request.querystring)
        // 登录成功后跳转到之前所在页面
        if (params.redirect) {
          ctx.response.redirect(params.redirect);
        }
      } else {
        ctx.success('sso信息过期,请清空cookie后重试!')
      }
    })

    接口: await fn()调用

    通过凭证获取的通行证(原来使用链接参数方式跨域传递通行证,不安全)

    ctx.sso.findTicketByStamp()

    登录验证接口(验证失败返回null)

    ctx.sso.verifyTicketAndGetAdmin()

    获取一个用户所有的角色 ctx.sso.getAdminAllRoles()

    获取用户在系统下的权限 ctx.sso.getPowerIdsBySystemIdAndAdminId()

    加载整个系统得权限树 ctx.sso.loadPowerList()

    登出sso ctx.sso.outLogin()

    获取整个系统的角色 ctx.sso.getApplicationAllRoles()

    获取拥有某个角色的用户 (不传则返回所有能访问系统的用户) ctx.sso.findAdminsByRoleName()

    Keywords

    none

    Install

    npm i @tuia/koa-sso

    DownloadsWeekly Downloads

    5

    Version

    1.2.1

    License

    ISC

    Unpacked Size

    19.2 kB

    Total Files

    7

    Last publish

    Collaborators

    • dinglh
    • candy_dd
    • wintersun97
    • tump
    • inuanfeng
    • zhoucheng
    • zhangmin173
    • aiduck
    • chao.zhou
    • babalk
    • leitingting
    • sillyy
    • nbseven
    • linhao-vue
    • liusandy