企业网站源码哪个最好暖色网站

news/2025/9/28 2:31:14/文章来源:
企业网站源码哪个最好,暖色网站,中国免费建站网,wordpress雪人主题IdentityServer4是什么#xff1f;IdentityServer4是基于ASP.NET Core实现的认证和授权框架#xff0c;是对OpenID Connect和OAuth 2.0协议的实现。OpenID Connect 和 OAuth2.0是什么OpenID Connect:OpenID Connect由OpenID基金会于2014年发布的一个开放标准, 是建立在OAuth … IdentityServer4是什么IdentityServer4是基于ASP.NET Core实现的认证和授权框架是对OpenID Connect和OAuth 2.0协议的实现。OpenID Connect 和 OAuth2.0是什么OpenID Connect:OpenID Connect由OpenID基金会于2014年发布的一个开放标准, 是建立在OAuth 2.0协议上的一个简单的身份标识层, OpenID Connect 兼容 OAuth 2.0. 实现身份认证Authentication参考资料https://openid.net/connect/OpenID Connect文档https://openid.net/specs/openid-connect-discovery-1_0.htmlOAuth2.0:OAuth2.0是一个开放的工业标准的授权协议Authorization它允许用户授权让第三方应用直接访问用户在某一个服务中的特定资源但不提供给第三方账号及密码信息参考资料https://www.cnblogs.com/xiandnc/p/9763121.htmlOAuth2.0 文档https://tools.ietf.org/html/rfc6749#page-73Authentication 和 Authorization的区别authentication: n. 证明鉴定证实authorization: n. 授权认可批准委任前者是身份识别鉴别你是谁后者是授权许可告诉你可以做什么。举个例子你吭哧吭哧写了一天的代码急于回家吃上一口媳妇做的热饭。当你走到小区门口的时候你需要刷小区的门禁卡才能进入到小区里面然后再找到你家在哪一栋楼几单元几号然后掏出钥匙开门才能回到家。在这个过程中刷小区的门禁就是认证你是这个小区的人拿你家的钥匙开门就是授权的过程如果你的认证不通过那就不存在授权。uth2.0的原理我们先来了解一下OAuth2.0中的几个关键概念资源所有者Resource Owner  一个能够访问受保护资源的实体。当资源所有者是一个人时它被称为终端用户资源服务器Resource Server  托管受保护资源的服务器能够使用访问令牌接受和响应受保护的资源请求客户端Client  代表资源所有者和其授权的应用程序来保护资源请求。术语客户端并不意味着任何特定的实现特征例如应用程序是否在服务器、桌面或其他设备上执行授权服务器Authorization Server  在成功验证资源所有者并获得授权之后服务器向客户端发出访问令牌。授权服务器是用来管理Resource OwnerResource ServerClient的中间人场景小李想要打印美图快印自己三年来发布在新浪微博相册中和女朋友的照片有没有什么方法他既不告诉工作人员自己的新浪微博用账号和密码又能够方便快捷的把照片给到美图快印呢排除存U盘这种手工操作 Authorization Server和Resource Server可以使独立的服务提供商也可以是在一起的比如例子中新浪微博既作授权服务器也用来存储用户的图片资源。我们可以看到OAuth2解决的问题是通过Authorization Server可以提供一个访问的凭据token给client美图快印的工作人员使得client可以在不知道Resource Owner以及Resource Server的用户名和密码的情况下访问到Resource Owner受保护的资源它是一个完美的中间人。  OAuth2.0详细内容请参考https://www.cnblogs.com/xiandnc/p/9763121.htmlIdentityServer4能做什么 用户认证服务  基于OpenID Connect实现的独立的认证服务实现对多平台web, native, mobile, services的集中认证API访问授权  为各种类型的客户机颁发api访问令牌例如服务器到服务器、web应用程序、spa和native/mobile程序联合身份认证  支持外部身份提供者如Azure Active Directory、Google、Facebook等定制化的实现  IdentityServer4的许多方面可以定制以满足您的需要,因为它是一个框架而不是SaaS服务所以可以通过编写代码来调整实现以适应不同的场景成熟的开原方案  使用许可的Apache2开源协议允许在其之上构建商业产品也作为.NET基金会支持的项目 https://dotnetfoundation.org/projects?typeprojectps10pn6提供免费的商业支持  官方可以对使用者提供部分的免费商业支持IdentityServer4定义的基本术语 IdentityServer  身份认证服务器是一个实现了OpenID Connect和OAuth 2.0协议的身份提供者它负责向客户端发布安全令牌User  使用注册客户端访问资源的用户Client        客户端从标识服务器请求令牌要么用于认证用户请求身份令牌要么用于访问资源请求访问令牌         客户端必须首先在身份服务器上注册然后才能请求令牌        这里的客户端可以是web应用程序、native mobile desktop applications, SPA 等程序Resource  资源是你想要用身份认证服务器保护的东西如用户的身份数据或api   每个资源都有一个惟一的名称客户端使用这个名称来指定他们想要访问的资源   关于用户的身份数据标识也称为claim例如姓名或电子邮件地址Identity Token  身份令牌代表身份验证过程的结果Access Token  访问令牌授权客户端以允许访问哪些API资源访问令牌包含客户端和用户的信息 IdentityServer4的简单示例 我们先来看一个简单的例子我们有三个API Order, Product, Inventory我们利用IdentityServer4来实现对着三个API的认证和授权。首先我们需要一个实现认证和授权的服务然后外部要想访问我们的API就必须通过统一的认证和授权服务的任何才可以否则就是返回401: UnAuthorized ,未经授权的访问。我们既可以将身份信息存储到内存中也可以将其持久化到数据库中此处我们使用内存模式快速的演示实现示例代码中也支持存储到DB中使用SqlLite EF Core首先我们需要安装IdentityServer4的Nuget包然后在ConfigureServices方法中添加如下代码来初始化需要保护的API资源信息代码如下 public void ConfigureServices(IServiceCollection services)        {            // config data in memory            services.AddIdentityServer()                .AddDeveloperSigningCredential()                .AddInMemoryApiResources(InitMemoryData.GetApiResources())                .AddInMemoryClients(InitMemoryData.GetClients())                .AddTestUsers(InitMemoryData.GetUsers());            // config in DB            //services.AddDbContextIdentityServerDbContext(options             //                            options.UseSqlite(sqliteConnection));        } InitMemoryData 中的配置信息如下// scopes define the API resources in your system       public static IEnumerableApiResource GetApiResources()       {           return new ListApiResource           {               new ApiResource(inventoryapi, this is inventory api),               new ApiResource(orderapi, this is order api),               new ApiResource(productapi, this is product api)           };       }       // clients want to access resources (aka scopes)       public static IEnumerableClient GetClients()       {           // client credentials client           return new ListClient           {               new Client               {                   ClientId  inventory,                   AllowedGrantTypes GrantTypes.ClientCredentials,                   ClientSecrets                    {                       new Secret(inventorysecret.Sha256())                   },                   AllowedScopes { inventoryapi }               },                new Client               {                   ClientId  order,                   AllowedGrantTypes GrantTypes.ClientCredentials,                   ClientSecrets                    {                       new Secret(ordersecret.Sha256())                   },                   AllowedScopes { orderapi }               },                new Client               {                   ClientId  product,                   AllowedGrantTypes GrantTypes.ClientCredentials,                   ClientSecrets                    {                       new Secret(productsecret.Sha256())                   },                   AllowedScopes { productapi }               }           };       }我们给IdentityServer4设置启动端口5000认证服务的地址就是http://localhost:5000 然后认证Server端的代码就好了接下来我们需要在API添加授权服务的配置配置都很类似我们以OrderAPI为例 // This method gets called by the runtime. Use this method to add services to the container.        public void ConfigureServices(IServiceCollection services)        {            services.AddMvcCore()                .AddAuthorization()                .AddJsonFormatters();            services.AddAuthentication(Bearer)                .AddIdentityServerAuthentication(options                 {                    options.Authority  http://localhost:5000;                    options.RequireHttpsMetadata  false;                    options.ApiName  orderapi;                });        }        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.        public void Configure(IApplicationBuilder app, IHostingEnvironment env)        {            app.UseAuthentication();            app.UseMvc();        }这里我们配置的Authority地址就是认证授权的地址AddAuthentication中的Bearer是Jwt Token的一种具体可参考文章https://www.cnblogs.com/Leo_wl/p/7792046.html在controller中添加简单代码来返回API的信息[Route([controller])]    [Authorize]    public class OrderController : ControllerBase    {        // GET api/order        [HttpGet]        public IActionResult Get()        {            var userIdentitys from c in User.Claims                                select new UserIdentity                                {                                    Type c.Type,                                    Value c.Value                                };            var result new UserIdentityModel()            {                Description Access user order api successfully,                UserIdentitys userIdentitys.ToList()            };            return new JsonResult(result);        }    }设置当前API的端口为5002Product和Inventory中的配置和这个类似端口信息以此设置为50015003一切就绪让我们来测试一下结果启动IdentotyServer以及三个API我们使用Postman来请求api下面站点就是IdentityServer的页面了接着我们来直接访问OrderAPI就会发现返回 401 这说明目前我们的API已经受保护了没有认证服务颁发的token是直接访问不了的。我们输入地址http://localhost:5000/.well-known/openid-configuration  可以查看我们当前认证授权服务的配置信息 现在还差一步就可以访问我们的OrderAPI了那就是客户端传入必要的信息给认证服务生成一定格式的token然后携带着这个token来访问我们的服务  传入的三个参数分别是grant_type , client_sercret, client_id这几个参数分别代表了我们申请token时的授权方式是客户端授权密匙clientid信息。我们在前面介绍过IdentityServer4是对OAuth2.0的实现所以具体参数的含义请参考之前OAuth2.0文章中的详细介绍https://www.cnblogs.com/xiandnc/p/9763121.html此时我们可以看到认证服务给我们返回了有效token指定过期时间3600s token的类型是Bearer然后我们再携带这这个token去访问服务试试看 我们可以看到此时API 返回了我们期待的正确结果如果在1小时后再携带着这个token去访问API就会提示token已过期需要重新生成才能够继续访问。看完这个例子是不是很简单很清爽呢例子参考代码https://github.com/KenWang007/IdentityServer4Demo原文地址https://www.cnblogs.com/xiandnc/p/10150814.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920186.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

沧州网站建设方案咨询万网主机建wordpress

作者:朱金灿 来源:http://blog.csdn.net/clever101/ 同事问我一个奇怪的问题:程序在他的机子上运行的好好的,但是其它人下载了源码之后可以编译通过,但是debug模式下调试运行到应用程序类中的InitInstance函数中的 i…

做网站收录的网站有哪些自己在线制作logo免费广告招牌

摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统物流配送人员车辆调度信息管理难度大,容错率低…

网页设计公司建设网站小程序网站app定制开发

美国股市昨日先抑后扬终结两连跌,开启反弹,道指、标普、纳指纷纷翻红。10月3日晚,美东时间周四,美股集体低开,盘初受宏观经济数据不及预期影响,三大指数大幅跳水跌逾1%,道指跌超300点。此后美股…

给喻家山下的投稿

给喻家山下的投稿隔山隔海回头望,最远最近是家乡。——《天知河》【图1:归途】 常常是在傍晚悄然离开,在摇摇晃晃的睡梦里穿越中原大地。醒来望向窗外,自己已然回到久违的华北平原——朦胧的天色里,平坦,辽阔,一…

什么网站可以自己做名片logo设计文案范例

解决问题的过程:1)查看服务器CPU使用情况输入top会发现排在前面的都是oracle的进程,而且CPU占用率都是50以上。$toptop - 16:28:41 up 4 days, 22:35, 1 user, load average: 21.49, 22.14, 22.05Tasks: 299 total, 31 running, 268 sleeping, 0 st…

网站首页的head标签内湖南室内设计公司排名

这篇文章,主要介绍Vue3项目工程中如何使用axios网络请求库实现前后端数据通信【知识星球】。 目录 一、axios依赖 1.1、下载axios依赖 1.2、创建axios工具类

经典企业网站模板青岛网站公司

注:这是一篇没有技术含量的水文,主要是看有人下载下来,居然当成资源需要积分才能下载。我觉得不行,故提供原始下载地址供查阅使用。 链接: 上述图片所示网址:链接直达

上海网站设计厂家考试培训

文章目录 一、MySQL和Oracle1.1 基本差别1.2 使用区别 二、MySQL和PostgreSQL2.1 基本差别2.2 使用差别 本系列文章: MySQL(一)SQL语法、数据类型、常用函数、事务 MySQL(二)MySQL SQL练习题 MySQL(三&…

有哪些免费推广网站网站建设用到什么

参展企业介绍 山东润德生物科技有限公司成立于2014年10月17日,是一家围绕生物制品的研发、生产、营销、国际贸易、技术服务为核心业务的国家高新技术企业,近年来荣获国家制造业单项冠军示范企业、国家级绿色工厂、国家知识产权优势企业、国家工业产品绿…

网站设计网站维护dedecms 食品网站模板

目录 一、C语言的语句有哪些 1.1 空语句 1.2 表达式语句 1.3 函数调用语句 1.4 复合语句 1.5 控制语句 二、分支语句(两种) 1.1 if语句 1.1.1 普通分支语句(if、if_else) 1.1.2 嵌套if语句 1.1.3 else嵌套if两种写法的比较 1.1.4 else悬空问题 1.1.…

找做企业网站周口市城乡建设局网站

函数进阶 函数进阶1.参数的补充1.1 参数内存地址相关【面试题】1.2 函数的返回值是内存地址1.3 参数的默认值【面试题】1.4 动态参数 2. 函数和函数名2.1 函数做元素2.2 函数名赋值2.3 函数名做参数和返回值 3.返回值和print4. 作用域4.1 函数为作用域4.2 全局和局部4.3 global…

维生素D,毛姆,我,还有停滞的3年

好久没写博文了,想把最近的一些想法post在这里。 今年11月中旬之后,就满26岁了,而且毕业3年,自己的工作没啥进展。有些怀疑自己是不是不太适合这个岗位,没给我太多成就感。 直到我的身体“宕机”了。 从大四实习结…

唐山地方志网站建设重庆网络推广培训

【力扣】416. 分割等和子集 给你一个 只包含正整数的非空数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5,…

南昌seo网站推广西充建设局网站

import java.util.ArrayList; import java.util.Iterator;/*** ArrayList单列集合的简单使用常见方法** author silence* 单列 :一次只能存储一个数据元素 list.add("张三"); 不像map集合可以存储一个键值对,两个元素 map.put("张三&quo…

商服网站模板成都市住房和城乡建设局

Git 标签功能允许开发者为特定的提交打上标签,以便后续能够方便地引用这些提交。标签通常用于标记重要的版本或里程碑,例如软件发布的版本号。与分支不同,标签指向的是固定的提交,一旦设置,就不能轻易更改。下面是一些…

局网站建设管理制度福州网站建设找时时在网络

引言: 在数字化时代,机房成为了许多组织和企业的核心基础设施,承载着重要的数据和应用。然而,随着网络攻击日益猖獗,机房的安全性显得尤为重要。本文将深入探讨如何构建坚固的网络防线,保护机房免受攻击的方…

平台网站建设合同清华紫光是可以做网站的吗

指在JSP的<%%> 和<% %>中可以直接使用的对象&#xff1a;没有特别说明可以开关的默认是开启的 一servlet理论上可以处理多种形式的请求响应形式http只是其中之一所以HttpServletRequest HttpServletResponse分别是ServletRequest和ServletResponse的之类 二 Http…

广西住房和城乡建设厅网站首页做动态h5的网站

auto用于变量声明时根据表达式自动推导其类型 int x 10; auto y x; // y 的类型是 int double a 5.5; auto b a * 2; // b 的类型是double decltype 是 C11 引入的一个关键字&#xff0c;用于查询表达式的类型。它允许编译器在编译时推断出一个表达式的类型&#xff0c;…

“一键并行搜索”的本地导航页实现

很实用的导航页面,能够并行搜索的小工具,这不仅是一个简单的搜索工具,更是一个功能丰富、高度个性化的浏览器主页。以下是它的核心功能摘要: 这是一个完全独立的、单文件 `HTML` 页面,旨在成为你的个人浏览器起始…

常见NAS文件传输协议中SMB、FTP、NFS、 rsync、WebDAV服务各有何区别?

在绿联 NAS 的 UGOS Pro 系统中,支持多种文件传输协议,包括 SMB、FTP、NFS、rsync 和 WebDAV。每种协议在功能、适用场景和配置上各有特点。本文将详细解析它们的特点、适用场景以及启用效果,帮助用户选择适合的文件…