You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Banno OAuth实现银行用户到我方网站的SSO登录?

基于Banno OAuth实现银行端到我方网站的无感知登录方案

一、整体登录流程实现步骤

  • 1. 完成Banno第三方应用注册
    先在Banno开发者后台注册我方网站作为合作应用,拿到专属的client_id和client_secret,同时配置好我方网站的授权回调URL(必须是Banno允许的可信域名),并明确申请所需的权限范围——至少要包含能获取用户唯一标识的权限,比如openid、profile这类基础权限。

  • 2. 银行端发起Banno授权请求
    用户在银行端已登录Banno的前提下,银行自有应用/网站直接跳转至Banno的授权端点,携带以下关键参数:

    response_type=code
    client_id=我方应用的client_id
    redirect_uri=预先配置的回调URL
    scope=openid email  # 根据实际需求调整权限
    state=随机生成的防串扰字符串
    prompt=none  # 实现无感知的核心参数
    

    因为用户已经在Banno有活跃会话,加上prompt=none参数,Banno会直接返回授权码,不会触发任何用户交互。

  • 3. 我方网站处理授权回调
    我方回调接口收到Banno返回的code和state后,先校验state的有效性(防止CSRF攻击),接着用code+client_id+client_secret调用Banno的令牌端点,获取access_token和id_token两个核心凭证。

  • 4. 完成我方网站用户登录
    解析id_token(JWT格式),从中提取Banno分配给用户的唯一标识sub字段,用这个sub匹配我方系统中已通过API注册的用户(需提前在用户注册时绑定sub与我方用户ID),匹配成功后生成我方网站的会话凭证(比如Session或自定义JWT),最后静默跳转到用户目标页面,完成登录。

二、Banno识别登录用户的逻辑

  • Banno通过全局唯一的用户ID(即id_token中的sub字段)来定位用户,这个ID是Banno为每个用户分配的永久唯一标识,不会重复。
  • 用户在银行端登录Banno时,Banno已经完成了身份验证并创建了用户会话,当我方发起授权请求时,Banno会自动读取当前活跃会话,关联到对应的用户,无需用户再次提供身份信息。
  • 关键前提:我方系统必须在用户首次注册时,将Banno返回的sub与我方用户ID做绑定,后续才能通过sub快速匹配到我方系统的用户。

三、无感知登录的核心实现要点

  • 强制携带prompt=none参数:这是实现无感知的核心,Banno会检查用户是否已登录且已授权我方应用,满足条件则直接返回授权码,不会弹出任何授权或登录界面。
  • 确保Banno会话处于活跃状态:用户必须已经在银行端完成Banno登录,且会话未过期,否则Banno会返回错误,需要引导用户重新登录Banno。
  • 提前完成应用授权:可以由银行端提前引导用户完成一次授权操作,或者通过Banno后台配置将我方应用设为可信合作方,默认开放授权,避免后续出现授权弹窗打断流程。
  • 后台静默处理全流程:我方回调接口要在后台完成令牌交换、用户匹配、会话生成的所有逻辑,全程不需要用户参与,处理完成后直接跳转至目标页面,用户无感知。

内容的提问来源于stack exchange,提问作者Curious Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 03:48:10