云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

负载均衡_同伊百度云资源_折扣

小七 141 0

.NET版在.NET Core中保护基于gRPC的微服务了解如何为.NETCore中的微服务向gRPC添加身份验证和授权。

DR:本教程将向您展示如何在基于gRPC的.NET核心微服务场景中集成身份验证和授权。您将学习保护服务器端点的过程,并学习如何授权gRPC客户端向其发出请求。最终项目的完整代码可以在GitHub存储库中找到。gRPC框架最近,gRPC变得非常流行,因为它允许您构建高性能的分布式系统。它最初是由Google设计的,目的是优化内部服务基础设施内的通信,现在它是一个开源项目,可用于最常见的编程语言:从Java到Python,再到PHP,再到C。简而言之,gRPC是一个远程过程调用框架(RPC框架),它基于HTTP/2协议来传输二进制消息,并在协议缓冲区(也称为Protobuf)上定义服务契约。gRPC服务的强制要求是只接受安全的gRPC连接,例如TLS连接。从.NET Core 3.0开始,Microsoft本机支持gRPC,因此.NET核心开发人员可以利用此框架来构建高效的微服务。使用gRPC和.netcore3.0实现微服务的教程向您介绍了在.netcore中使用这个框架的基本知识。它向您展示了如何创建一个简单的微服务,该服务评估客户是否有权接收给定金额的信用,以及向其发出请求的客户机。在本教程中,您将获得该项目,并将使用Auth0保护客户机和服务器之间的通信。先决条件第一步,确保您的计算机上安装了.NETCore3.1SDK。您可以通过在终端窗口中运行以下命令来进行检查:dotnet—版本如果获得值3.1.100或更高,则您的环境已准备好启动此项目。否则,请下载.NETCore3.1SDK并将其安装到您的计算机上。如果您有最新版本的Visual Studio,则已经安装了.NET Core 3.1 SDK。如果这是您第一次在计算机上运行基于HTTP的.NET核心应用程序,则必须信任HTTPS开发服务器证书。您可以在终端窗口中运行以下命令:dotnet开发证书https--信任既然您信任TLS/SSL证书,那么可以通过键入以下命令从GitHub下载初始项目:git clone-b起点--单分支https://github.com/auth0-blog/secure-grpc-dotnet此命令将仅克隆计算机中存储库的起始点分支。这个分支包含gRPC服务器及其客户端的完整代码,这些代码构建在上面提到的gRPC教程中。克隆存储库后,您将在您的计算机上找到一个安全的grpc dotnet文件夹。在此文件夹中,您有:CreditRatingService文件夹:它包含gRPC服务器的.NET核心项目CreditRatingClient文件夹:它包含客户端的项目。现在要修改这些项目以使用Auth0身份验证和授权功能。如果您想要更多关于客户端和服务器实现的详细信息,请查看gRPC教程。身份验证和授权场景从GitHub下载的gRPC服务器实现接受来自任何gRPC客户端的请求。如前所述,本教程的目标是保护gRPC服务器,以便只有经过授权的gRPC客户端才能请求检查客户是否可以获得信贷。Auth0为您提供了在应用程序中集成身份验证和授权的简单方法。但是,确定适用于您的系统的正确场景是非常重要的。您的系统场景要求您为身份验证和授权选择正确的流。实现gRPC客户机和服务器的两个项目所描述的场景是一个微服务场景。在这种情况下,这两个应用程序可以在没有用户交互的情况下自动运行,即使最初的请求是由用户发起的。在特定情况下,gRPC客户机是一个需要用户运行的控制台应用程序。然而,这个选择是为了简单起见。在生产环境中,客户机可以是一个没有用户交互的正在运行的进程。所以,在你要保护的系统中,客户机和服务器是自主的,而不是代表用户。它们是在服务器端运行的,因此这两个应用程序都不可公开访问。这一点非常重要,因为它们不可公开访问这一事实让您可以界定它们可能遇到的安全风险。换句话说,这就是所谓的机器对机器(M2M)场景。在本例中,您要使用的流是客户端凭据流。通过这个流,客户机本身是经过身份验证和授权的,而不是代表用户。下图总结了此流中客户端(M2M应用程序)、服务器(您的API)和授权服务器(Auth0租户)之间的交互。考虑到这个场景,您就可以安排这两个项目来支持客户机凭证流了。"了解如何在.NET Core中保护gRPC微服务。"在推特上留言保护gRPC服务器通过保护gRPC服务器不受未经授权的访问来保护微服务系统。您将通过向Auth0注册服务器并对CreditRatingService项目应用一些更改来实现此目标。向Auth0注册服务器因此,要向Auth0注册gRPC服务器,请访问Auth0仪表板。如果你没有Auth0帐户,你可以在这里注册一个免费的Auth0帐户。然后,转到仪表板的API部分,并执行以下步骤:单击"创建API"提供API的友好名称(例如,信用评级服务)和URL格式的唯一标识符(例如,https://credit rating service.信用评级服务),如下图所示:将签名算法保留为RS256,然后单击Create按钮这些步骤使Auth0知道您的服务器,并允许您控制访问。当您在Auth0仪表板中时,请注意您的Auth0域,您很快就会需要它。这是一个字符串,格式为YOUR-TENANT-名称.auth0.com其中YOUR-TENANT-NAME是使用Auth0创建帐户时提供的名称。有关更多信息,请查看文档。配置服务器应用程序现在,您需要使用Auth0提供的参数配置gRPC服务器。所以,移动到securegrpc dotnet文件夹下的CreditRatingService文件夹。这里,打开应用设置.json配置文件,并将其内容替换为以下内容:{"日志记录":{"LogLevel":{"Default":"警告","Microsoft.Hosting.Lifetime":"信息"}},"AllowedHosts":"*","红隼":{"端点默认值":{"协议":"Http2"}},"Auth0":{"Domain":"您的认证域","audition":"您的\u唯一的\u标识符"}}使用AUTH0域替换YOUR-AUTH0\u域占位符,使格式与YOUR-TENANT匹配-名称.auth0.com和"YOUR"的"UNIQUE"标识符占位符,其中包含作为API的唯一标识符提供的值。将服务器与Auth0集成为了与Auth0授权服务交互,您的服务器需要能够处理JWT(jsonwebtoken)格式的令牌。有兴趣尽快了解JWTs吗?下载免费电子书$('.jwt手册按钮a')。单击(功能(e){metricsLib.track('博客:点击:jwt手册广告");});您可以通过安装Microsoft.AspNetCore.Authentication.JwtBearer库。因此,仍然在CreditRatingService文件夹中,在终端窗口中键入以下命令:dotnet添加包Microsoft.AspNetCore.Authentication.jwt持有人几秒钟后,包就安装好了,您可以对服务器的代码进行更改,以便它支持身份验证和授权。为此,打开启动.cs将using部分替换为以下内容://信用评级服务/启动.cs使用Microsoft.AspNetCore.Builder;使用Microsoft.AspNetCore.Hosting;使用Microsoft.AspNetCore.Http;使用Microsoft.Extensions.DependencyInjection;使用Microsoft.Extensions.Hosting;使用Microsoft.Extensions.Configuration;使用Microsoft.AspNetCore.Authentication.jwt持有人;命名空间CreditRatingService{// ... 剩下的不动。。。}与以前的版本相比,添加了对的引用Microsoft.Extensions.Configuration以及Microsoft.AspNetCore.Authentication.jwt持有人。前者提供访问配置文件的功能,后者使您能够使用刚刚安装的JWT包。要使gRPC服务器能够从配置文件中读取数据,请将配置属性和Startup()构造函数添加到Startup类中,如下所示://信用评级服务/启动.cs使用Microsoft.AspNetCore.Builder;使用Microsoft.AspNetCore.Hosting;使用Microsoft.AspNetCore.Http;使用Microsoft.Extensions.DependencyInjection;使用Microsoft.Extensions.Hosting;使用Microsoft.Extensions.Configuration;使用Microsoft.AspNetCore.Authentication.jwt持有人;命名空间CreditRatingService{公共类启动{公共IConfiguration配置{get;}公共启动(IConfiguration配置){Configuration=配置;}// ... 剩下的不动。。。}}这些更改允许服务器自动在配置属性中加载保存在中的参数应用设置.json文件。现在,您必须为服务器配置身份验证和授权。还在启动.cs文件中,将ConfigureServices()方法替换为以下代码://信用评级服务/启动.cs// ... 剩下的不动。。。public void ConfigureServices(IServiceCollection服务){服务.AddAuthentication(选项=>{选项