博客
关于我
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/

    你可能感兴趣的文章
    Nginx配置代理解决本地html进行ajax请求接口跨域问题
    查看>>
    nginx配置全解
    查看>>
    Nginx配置参数中文说明
    查看>>
    nginx配置域名和ip同时访问、开放多端口
    查看>>
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置如何一键生成
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    Nginx配置文件nginx.conf中文详解(总结)
    查看>>
    Nginx配置负载均衡到后台网关集群
    查看>>
    ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
    查看>>
    NHibernate学习[1]
    查看>>
    NHibernate异常:No persister for的解决办法
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
    查看>>
    NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
    查看>>
    NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
    查看>>