zoukankan      html  css  js  c++  java
  • identity server4获取token和userInfo

    一、简介

    IdentityServer4(ids4)是用于ASP.NET Core的OpenID Connect和OAuth 2.0框架。在许多成熟的.net core框架中都完美的集成的该身份服务框架,用于提供单一的身份授权服务和简单的配置。ids4十分适用于分布式和微服务系统的身份验证,本篇就介绍一下ids4在微服务框架中如何获取token和userInfo。

    二、开始前

    ids4提供的token默认JWT格式,.net core中也对JWT做了完美支持。这里不建议大家自己在项目中集成ids4框架,最好选择abp、abp vNext框架或ids4 demo进行试验。abp和abp vNext框架中都对ids4和JWT做了完美的集成。特别是abp vNext微服务框架,该框架不仅对ids4和ocelot等框架进行了集成,还将微服务的身份验证进行了统一的授权,并做了单一的授权服务可对外提供open  id。推荐abp框架的目的是可以免去学习.net core身份机制和IdentityServer4框架的痛苦,目前关于ids4的踩坑资料并不多,所以如果个人去集成ids4框架是存在不少风险的。

    三、获取token

    ids4 提供的令牌端点:

    POST /connect/token
    
        client_id=client1&
        client_secret=secret&
        grant_type=authorization_code&
        code=hdh922&
        redirect_uri=https://myapp.com/callback

    上面只是获取token的示例,实际开发中不会这样配置。

    我的示例使用的是abp vNext微服务中的授权服务,并没有在.net core中单独集成ids4 和JWT。示例中我会对client_id和grant_type做新的配置,方便大家实际体验。

    step1:添加client_id

    ids4官方有提供Admin UI管理,但是价格昂贵就不考虑了。深度使用的话可以基于ids4提供的ef core程序集进行身份管理开发,abp vNext中似乎对ids4进行了身份管理开发,但是接口并未发布。如果只是简单身份配置的话建议在abp vNext授权服务的种子文件中进行身份添加然后使用ef core还原到数据库。不想去折腾abp vNext微服务框架,直接修改数据库也是可以的。

    step2:配置client_id发放token方式(ClientGrantType)

    ids4提供的token发放方式有多种,web开发中使用password方式发放token。

    step3:配置client加密(ClientSecret)

    ids4基于client发放token,所以获取token也需要提供client密码。

    以上配置均可以在abp vNext授权服务种子文件中进行添加。直接修改数据库需要对ids4数据库中的以下表进行先后修改:IdentityServerClients、IdentityServerClientGrantTypes、IdentityServerClientSecrets

    step4:获取token

    启动服务后使用postman获取token参数如下:

     token:

     四、获取userInfo

    ids4提供了便捷的userInfo获取方式,用于其他系统获取用户信息。

    step1:配置openid

    使用abp vNext授权服务ids4种子文件可以直接配置openid,直接修改数据库需要在ids4数据库的IdentityServerClientScopes表中进行配置。

    step2:获取userInfo

    使用postman获取userInfo参数如下:

     userInfo:

     userInfo输出了用户id和姓名,配置openid信息在IdentityServerIdentityClaims表中。

    五、总结

    identity server4获取token和userInfo的方式介绍完了,强烈推荐使用abp框架研究配置和应用ids4,喜欢折腾的朋友也可以参考ids4官方demo。ids4框架十分强大复杂,笔者不推荐从头学习,个人应该以学习如何配置和应用为主。后续我会介绍更多ids4的使用技巧和ids4在微服务中的应用,喜欢的朋友可以持续关注下。。。

     
  • 相关阅读:
    union
    大端和小端
    迭代器
    STL
    动态内存管理2
    动态内存管理
    关于 FlexBox
    CSS的居中问题
    操作符
    JavaScript介绍
  • 原文地址:https://www.cnblogs.com/william-xu/p/11606117.html
Copyright © 2011-2022 走看看