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

    你可能感兴趣的文章
    Node-RED订阅MQTT主题并调试数据
    查看>>
    Node-RED通过npm安装的方式对应卸载
    查看>>
    node-request模块
    查看>>
    node-static 任意文件读取漏洞复现(CVE-2023-26111)
    查看>>
    Node.js 8 中的 util.promisify的详解
    查看>>
    node.js debug在webstrom工具
    查看>>
    Node.js RESTful API如何使用?
    查看>>
    node.js url模块
    查看>>
    Node.js Web 模块的各种用法和常见场景
    查看>>
    Node.js 之 log4js 完全讲解
    查看>>
    Node.js 函数是什么样的?
    查看>>
    Node.js 函数计算如何突破启动瓶颈,优化启动速度
    查看>>
    Node.js 切近实战(七) 之Excel在线(文件&文件组)
    查看>>
    node.js 初体验
    查看>>
    Node.js 历史
    查看>>
    Node.js 在个推的微服务实践:基于容器的一站式命令行工具链
    查看>>
    Node.js 实现类似于.php,.jsp的服务器页面技术,自动路由
    查看>>
    Node.js 异步模式浅析
    查看>>
    node.js 怎么新建一个站点端口
    查看>>
    Node.js 文件系统的各种用法和常见场景
    查看>>