首页 > 其他分享 >keycloak~关于授权码认证中的scope的实践

keycloak~关于授权码认证中的scope的实践

时间:2024-09-25 11:15:44浏览次数:7  
标签:openid code auth 认证 token scope email keycloak

前言

1. scope 参数的作用

  • 定义权限scope 用于声明请求访问的资源和权限。常见的值包括 openidprofileemail 等。
  • 影响返回的数据:如果你在授权请求中指定了某些 scope,在后续的 token 请求中,Keycloak 会根据这些 scope 返回相应的信息。
  • openid用于指示请求者希望使用 OpenID Connect 进行身份验证
  • 获取 ID Token:当你在授权请求中包含 openid 时,Keycloak 会返回一个 ID Token,包含用户的身份信息,反之,scope里不加openid,则不会生成ID Token这个字段。

2. 在不同阶段使用 scope

  • 授权请求阶段 (/protocol/openid-connect/auth):

    • 可以传递 scope 参数,以便在用户同意授权时,明确所请求的权限。
  • 令牌请求阶段 (/protocol/openid-connect/token):

    • 也可以在此阶段传递 scope,但通常情况下,如果在授权请求中已指定 scope,则不需要在此再次指定;
    • 在授权中指定了scope,这里再指定是无效的,以授权中指定的值为准

3. 示例

以下是一个获取授权码的请求示例:

GET /auth/realms/{realm}/protocol/openid-connect/auth?
response_type=code&
client_id={client_id}&
redirect_uri={redirect_uri}&
scope=openid profile

4. 总结

  • 建议:虽然 scope 在授权请求中是可选的,但为了确保获得正确的权限和数据,建议在请求中包含 scope 参数。
  • 注意:在实际开发中,根据你的应用需求合理配置 scope 是非常重要的。

实践

oauth2授权码认证的过程

1. 配置客户端及scope模板

  • 默认模板,无论应用是否传scope,默认模板里的权限都会被启用
  • 可选模板,由用户自己选择,通过scope来体现,它会追加到默认模板后面

2. 获取授权码

  • scope中体现了获取用户的email,这一步是由用户自己选择的公开的信息
  • 地址:/auth/realms/{realm}/protocol/openid-connect/auth?client_id=dahengshuju&scope=profile email&redirect_uri=http://www.baidu.com&response_type=code

3. 表单认证

  • 提示用户输入账号密码进行登录
  • 登录成功后,重定向到来源页,带上code码
  • code授权码使用一次后,立即过期

4. 获取token

  • 通过步骤3,获取到的code,它通过scope来限制授权的范围【即token和获取用户信息中包含的字段集合】
  • 步骤2指定了scope,这一步再指定scope是无效的,二选一即可
  • 地址:/auth/realms/{realm}/protocol/openid-connect/token
  • 请求表类型:x-www-form-urlencoded
  • 请求参数
grant_type:authorization_code
code:3be438fe-8651-4a84-8141-976b76e671e1.75cab95f-a1ec-4b9b-9a6e-8f1ecb651cd6.61d819de-33e4-4006-ae66-dd7609ea2d3e
client_id:dahengshuju
client_secret:9e3de70f-d5cd-4d11-a8aa-85fd3af13265
scope:profile
  • 这是scope为profile email的token
{
    "exp": 1727233162,
    "iat": 1727231362,
    "auth_time": 1727229121,
    "jti": "bb296d9d-d521-45b1-aab9-8cb6bea0ddc3",
    "iss": "https://xx.xx.com/auth/realms/xx",
    "sub": "347c9e9e-076c-45e3-be74-c482fffcc6e5",
    "typ": "Bearer",
    "azp": "dahengshuju",
    "session_state": "75cab95f-a1ec-4b9b-9a6e-8f1ecb651cd6",
    "acr": "0",
    "scope": "email profile",
    "email_verified": false,
    "preferred_username": "test",
    "locale": "zh-CN",
    "email": "[email protected]"
}
  • 这是scope为profile的token,里面是没有email信息的
{
    "exp": 1727233521,
    "iat": 1727231721,
    "auth_time": 1727229121,
    "jti": "f7de8ad9-7558-4f4a-8761-8724f685febb",
    "iss": "https://xx.xx.com/auth/realms/xx",
    "sub": "347c9e9e-076c-45e3-be74-c482fffcc6e5",
    "typ": "Bearer",
    "azp": "dahengshuju",
    "session_state": "75cab95f-a1ec-4b9b-9a6e-8f1ecb651cd6",
    "acr": "0",
    "scope": "profile",
    "preferred_username": "test",
    "locale": "zh-CN"
}

5. 通过access_token获取用户信息

  • 用户信息主要是对token中的内容进行解析
  • 地址:/auth/realms/{realm}/protocol/openid-connect/userinfo
  • 请求头:Authorization: Bearer
{
    "sub": "347c9e9e-076c-45e3-be74-c482fffcc6e5",
    "email_verified": false,
    "preferred_username": "test",
    "locale": "zh-CN",
    "email": "[email protected]"
}

标签:openid,code,auth,认证,token,scope,email,keycloak
From: https://www.cnblogs.com/lori/p/18430912

相关文章

  • 2024年9月北京、广州、深圳PMP®项目管理认证,跟专家学
    PMP®认证是ProjectManagementInstitute在全球范围内推出的针对评价个人项目管理知识能力的资格认证体系。国内众多企业已把PMP®认证定为项目经理人必须取得的重要资质。 截至2023年2月,全球获得PMP®认证的人数总计131万,其中中国大陆地区累计46万+人持有效证书,占全球33.93%。......
  • 2024年9月北京、广州、深圳CDGA/CDGP数据治理认证,来这就对
    DAMA-CDGA/CDGP数据治理认证是数据管理领域的认证,具有极高的行业认可度和含金量。它们不仅能够帮助个人提升数据治理的专业知识和技能水平,还能够为个人的职业发展提供有力保障和广阔空间。在数字化转型的浪潮中,掌握数据治理的核心能力将成为企业核心竞争力的关键要素。因此,对于有志......
  • 2024年9月北京、广州、深圳NPDP®产品经理认证,来这很对
    在当今这个快速变化的商业环境中,产品创新已成为企业持续发展与竞争的核心动力。为了有效应对市场挑战,提升产品开发效率与质量,越来越多的企业和个人开始关注并投身于专业的产品开发与管理知识体系的学习与实践中。其中,新产品开发专业人员(NPDP)认证作为全球公认的产品开发与管理领域的......
  • 视频汇聚EasyCVR视频监控平台调取接口提示“认证过期”是什么原因?
    视频汇聚EasyCVR视频监控平台,作为一款智能视频监控综合管理平台,凭借其强大的视频融合汇聚能力和灵活的视频能力,在各行各业的应用中发挥着越来越重要的作用。EasyCVR平台具备强大的拓展性和灵活性,支持多种视频流的外部分发,如RTMP、RTSP、HTTP-FLV、WebSocket-FLV、HLS、WebRTC、WS-......
  • EasyCVR视频监控平台调取接口提示“认证过期”是什么原因?
    有用户反馈,调取分组绑定通道接口提示认证过期,添加token还是出现此问题,于是请求我们协助排查。拿到现场后,技术人员进行接口复现。使用接口工具调取/api/v1/label/updatechannels复现问题,添加token之后无法鉴权到验证。随后调取其它接口发现正常,于是再次对其在平台的操作对比,发现此接......
  • 企业为何选择体系认证:提升竞争力的全方位战略
    在许多行业中,投标过程是企业获取项目的重要途径。许多招标企业在选择合作伙伴时,会明确要求投标方具备特定的体系认证。这些认证通常包括ISO9001(质量管理体系)、ISO14001(环境管理体系)和ISO45001(职业健康安全管理体系)等。具备这些认证的企业不仅能够证明其管理水平,还表明其在质量、......
  • 55 mysql 的登录认证流程
    前言这里我们来看一下 mysql 的认证的流程 我们这里仅仅看 我们最常见的一个认证的处理流程我们经常会登录的时候 碰到各种异常信息  认证失败的大体流程大概的流程是这样 客户端和服务器建立连接之后, 服务器向客户端发送 salt然后 客户端根据salt 将客户端传入的密......
  • 小米15系列旗舰新品齐获3C认证,10-11月手机大战一触即发
    【9月24日最新资讯】 小米15标准版(型号24129PN74C)与小米15Pro(型号2410DPN6CC)接连获得国家质量监督检验检疫总局3C强制性产品认证,预示着这两款备受瞩目的旗舰新机离正式面世又迈进一大步。两者均配备最高90W超级快充技术,彰显了小米在快速充电领域持续领跑的决心。北京昌......
  • Oracle 19c OCP 认证考试 082 题库(第24题)- 2024年修正版
    【优技教育】Oracle19cOCP082题库(Q24题)-2024年修正版考试科目:1Z0-082考试题量:90通过分数:60%考试时间:150min本文为(CUUG原创)整理并解析,转发请注明出处,禁止抄袭及未经注明出处的转载。原文地址:http://www.cuug.com/index.php?s=/home/article/detail/id/3410.html第......
  • TISAX认证是否对企业的营销和品牌建设有积极影响?
    TISAX认证对企业的营销和品牌建设具有积极影响。获得TISAX认证可以帮助企业树立良好的信息安全形象,增强客户对企业的信任度,提升品牌价值和竞争力。企业可以将TISAX认证作为市场营销的强有力工具,突出企业在信息安全管理方面的专业性和责任意识,吸引更多客户和合作伙伴的青睐。此......