.Net ID4集合( 单点,redis ,Autofac,微服务)

IdentityServer4

IdentityServer4是个啥?

IdentityServer4是用于ASP.NET Core的OpenID Connect和OAuth 2.0框架。它在您的应用程序中启用以下功能:

  • 身份验证服务:所有应用程序(Web,本机,移动,服务)的集中式登录逻辑和工作流。IdentityServer是OpenID Connect 的官方认证实现。
  • 单点登录/退出:多种应用程序类型的单点登录/注销。
  • API的访问控制:为各种类型的客户端(例如,服务器到服务器,Web应用程序,SPA和本机/移动应用程序)的API发出访问令牌。
  • 联合网关:支持外部身份提供程序,例如Azure Active Directory,Google,Facebook等。这使您的应用程序免受如何连接到这些外部提供程序的详细信息的影响。
  • 专注于定制:最重要的部分-IdentityServer的许多方面都可以自定义以满足您的需求。由于IdentityServer是框架,而不是盒装产品或SaaS,因此您可以编写代码以使系统适合您的方案,以适应系统的需要。
  • 成熟的开源:IdentityServer使用许可的Apache 2许可证,该许可证允许在其之上构建商业产品。它也是.NET Foundation的一部分,该.NET Foundation提供治理和法律支持。

什么时候需要使用IdentityServer4

大多数现代应用程序或多或少看起来像这样:

最常见的交互是:

  • 浏览器与Web应用程序通信
  • Web应用程序与Web API通信(有时是自己通信,有时是代表用户的)
  • 基于浏览器的应用程序与Web API通信
  • 本机应用程序与Web API通信
  • 基于服务器的应用程序与Web API通信
  • Web API与Web API通信(有时是独立的,有时是代表用户的)

通常,每一层(前端、中间层和后端)都必须保护资源并实现身份验证和/或授权——通常针对相同的用户存储。将这些基本安全功能外包给安全令牌服务可以防止该功能在这些应用程序和端点之间重复。

重组应用程序以支持安全令牌服务将产生以下架构和协议:

这样的设计将安全问题分为两个部分:

认证(Authentication)

当应用程序需要知道当前用户的身份时,需要进行身份验证。通常,这些应用程序代表该用户管理数据并确保该用户只能访问允许他访问的数据。最常见的例子是(经典)web应用程序,但是本地和基于JS的应用程序也需要身份验证。

最常见的身份验证协议是SAML2p、WS-Federation和OpenID Connect(SAML2p是最流行和最广泛部署的)。

OpenID Connect是三者中最新的一个,但它被认为是未来的发展方向,因为它在现代应用程序中具有最大的潜力。它从一开始就为移动应用程序场景构建,并被设计为对API友好。

API访问

应用程序有两种与API通信的基本方式:使用应用程序身份或委托用户标识。有时这两种方法需要结合使用。

OAuth2是一种协议,它允许应用程序从安全令牌服务请求访问令牌,并使用它们与API通信。由于身份验证和授权可以集中化,这种委托减少了客户端应用程序和API的复杂性。

OpenID Connect和OAuth 2.0 –更好的结合在一起

OpenID Connect和OAuth 2.0非常相似(实际上OpenID Connect是OAuth 2.0之上的一个扩展)。身份验证和API访问这两个基本的安全问题被合并到一个协议中(通常是一个安全令牌服务的单次往返)。

我们相信OpenID Connect和OAuth 2.0的结合是在可预见的未来保护现代应用程序的最佳方法。IdentityServer4是这两个协议的实现,并且经过高度优化,可以解决当今移动、本机和web应用程序的典型安全问题。

IdentityServer4如何提供帮助

IdentityServer是将符合规范的OpenID Connect和OAuth 2.0端点添加到任意ASP.NET Core应用程序的中间件。

通常,您构建(或重用)一个包含登录和注销页面(也可能是同意——这取决于您的需要)的应用程序,IdentityServer中间件将必要的协议头添加到其中,以便客户端应用程序可以使用这些标准协议与之通信。

托管应用程序可以像您期望的那样复杂,但是我们通常建议通过只包含与身份验证相关的UI来尽可能地缩小攻击范围。

我们需要了解的几个术语

IdentityServer中的规范、文档和对象模型使用了一些特定术语,我们应该有所了解。

IdentityServer:IdentityServer是OpenID Connect提供程序-它实现了OpenID Connect和OAuth 2.0协议。不同的文献对同一角色使用不同的术语(您可能还会发现安全令牌服务、身份提供程序、授权服务器、IP-STS等)。但简单地说,它们都是一样的:一个向客户端颁发安全令牌的软件。

IdentityServer具有许多作业和功能:

  • 保护您的资源
  • 使用本地帐户存储或通过外部身份提供商对用户进行身份验证
  • 提供会话管理和单点登录
  • 管理和认证客户端
  • 向客户端颁发标识和访问令牌
  • 验证令牌

用户:用户是使用注册客户端访问资源的人。

客户端:客户端(如Web应用程序,移动应用或桌面应用程序,SPA,服务器进程等)是一种从IdentityServer请求令牌的软件——用于认证用户(请求标识令牌)或访问资源(请求访问令牌)。客户端必须首先在IdentityServer中注册,然后才能请求令牌。

资源:资源是您要使用IdentityServer保护的东西(如用户的身份数据或API),每个资源都有一个唯一的名称(客户端使用此名称来指定他们要访问的资源)。

  • 标识(身份)数据:有关用户的身份信息(也称为claims),例如姓名或电子邮件地址。
  • API:API资源代表客户端想要调用的功能(通常建模为Web API,但不一定如此)。

身份(标识)令牌:身份(标识)令牌表示身份验证过程的结果。它至少包含用户的标识符(被称为sub,也叫做 subject claim)以及有关用户如何以及何时进行身份验证的信息。它可以包含其他身份(标识)数据。

访问令牌:访问令牌允许访问API资源。客户端请求访问令牌并将其转发到API。访问令牌包含有关客户端和用户(如果有)的信息。API使用该信息来授权对其数据的访问。

IdentityServer4+单点登录落地系列

一。搭建IdentityServer4服务端

打开VS2017,新建 netcore项目:

名字叫:IdentityS4, 然后选择webMVC这个,如下图:

引进安装依赖项:IdentityServer4

设置该项目的地址为:http://localhost:5000

新建一个配置文件类:Config.cs 代码如下:

public class Config
    {
        // scopes define the resources in your system
        public static IEnumerable<IdentityResource> GetIdentityResources()
        {
            return new List<IdentityResource>
            {
                new IdentityResources.OpenId(),
                new IdentityResources.Profile(),
            };
        }

        // cl
  • 16
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值