博客
关于我
asp.net core IdentityServer4 实现 implicit(隐式许可)实现第三方登录
阅读量:505 次
发布时间:2019-03-06

本文共 3250 字,大约阅读时间需要 10 分钟。

OAuth 2.0 授权模式及 IdentityServer4 配置指南

前言

OAuth 2.0 提供了四种主要的授权模式(GrantType),其中之一是简化模式(implicit)。该模式的特点是通过浏览器直接向认证服务器申请令牌,无需经过第三方应用程序的服务器处理,省去了“授权码”这一步骤,因此得名。所有操作均在浏览器完成,令牌对访问者是可见的,而客户端无需进行认证。

认证步骤

  • 客户端携带客户端标识及重定向URI到授权服务器。
  • 用户确认是否授予客户端权限。
  • 授权服务器收到许可后,跳转至指定的重定向地址,并附带令牌。
  • 客户端向资源服务器请求资源时,不携带之前获取的令牌片段。
  • 资源服务器向浏览器返回一个脚本。
  • 浏览器根据返回的脚本提取之前获取的令牌。
  • 令牌由浏览器推送给客户端。
  • 配置认证授权服务器

    在 IdentityServer4 中进行配置,确保客户端能够顺利获取令牌。以下是常用配置步骤:

  • 安装 IdentityServer4 NuGet 包。
  • 定义身份资源及可访问API的客户端服务器:
    public class Config{    public static IEnumerable
    GetIdentityResources() { return new List
    { new IdentityResources.OpenId(), new IdentityResources.Profile(), new IdentityResources.Email() }; } public static IEnumerable
    GetClients() { return new List
    { new Client { ClientId = "mvc", ClientName = "MyClient", AllowedGrantTypes = GrantTypes.Implicit, RedirectUris = { "http://localhost:5003/signin-oidc" }, PostLogoutRedirectUris = { "http://localhost:5003/signout-callback-oidc" }, AllowedScopes = new List
    { IdentityServerConstants.StandardScopes.OpenId, IdentityServerConstants.StandardScopes.Profile, IdentityServerConstants.StandardScopes.Email }, RequireConsent = false } }; }}
  • ConfigureServices 方法中注入 IdentityServer4 服务:
    services.AddIdentityServer()    .AddDeveloperSigningCredential()    .AddInMemoryIdentityResources(Config.GetIdentityResources())    .AddInMemoryClients(Config.GetClients())    .AddTestUsers(TestUsers.Users);
  • Configure 方法中添加 IdentityServer4 中间件:
    app.UseIdentityServer();
  • 新建客户端

    在完成上述配置后,新建客户端可以通过以下步骤实现:

  • 安装并配置 IdentityServer4:
    dotnet new -i identityserver4.templates
  • ConfigureServices 方法中添加 GitHub 认证:
    services.AddAuthentication()    .AddCookie("Cookies")    .AddOpenIdConnect("oidc", options =>    {        options.Authority = "http://localhost:5004";        options.RequireHttpsMetadata = false;        options.ClientId = "mvc";        options.SaveTokens = true;        options.GetClaimsFromUserInfoEndpoint = true;    });
  • Configure 方法中添加认证中间件:
    app.UseAuthentication();
  • 运行

    登录成功后,可以通过浏览器获取 ClaimsIdentity,并根据需求进行相应操作。如需进一步配置或问题解决,可参考相关文档或社区资源。

    GitHub 第三方登录配置

    在授权服务器中添加 GitHub 第三方登录,需在 ConfigureServices 方法中进行如下配置:

    public void ConfigureServices(IServiceCollection services){    services.AddMvc();    services.AddIdentityServer()        .AddDeveloperSigningCredential()        .AddInMemoryIdentityResources(Config.GetIdentityResources())        .AddInMemoryClients(Config.GetClients())        .AddTestUsers(TestUsers.Users);    services.AddAuthentication()        .AddGitHub(options =>        {            options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;            options.ClientId = "your client";            options.ClientSecret = "your Secret";        });}

    登录成功后,系统会返回相应的 ClaimsIdentity,用户可根据需求进行处理。

    概要

    以上文档详细介绍了 OAuth 2.0 简化模式(implicit)的工作原理及 IdentityServer4 的配置方法,涵盖了从安装到客户端创建、运行测试以及第三方登录配置等内容,为开发者提供了完整的解决方案。

    转载地址:http://zshbz.baihongyu.com/

    你可能感兴趣的文章
    postcss-pxtorem 参数之selectorBlackList、exclude的用法
    查看>>
    Postek博思得标签打印机更换电脑,打印出来标签空白
    查看>>
    postfix+ dovecot搭建邮件服务器
    查看>>
    postfix在邮件服务器中的使用
    查看>>
    PostGIS 3.1.2软件安装详细教程(地图工具篇.8)
    查看>>
    PostGIS中获取所有EPSG的编码以及对应Proj4字符串
    查看>>
    SpringBoot中集成海康威视SDK实现布防报警数据上传/交通违章图片上传并在linux上部署(附示例代码资源)
    查看>>
    PostGIS在Windows上的下载与安装
    查看>>
    Qt开发——网络编程之UDP客户端
    查看>>
    postgis数据库优化_postgresql 性能优化
    查看>>
    postgis求面积、交集等相关函数
    查看>>
    postgis相关函数
    查看>>
    Postgres Docker版本安装mysql_fdw 插件
    查看>>
    Postgres invalid command \N数据恢复处理
    查看>>
    Postgres like 模糊查询匹配集合
    查看>>
    Postgres 自定义函数内实现 in 操作符的递归查询
    查看>>
    Postgres 返回当前时间前后指定天数的集合
    查看>>
    postgres--vacuum
    查看>>
    postgres--wal
    查看>>