推荐一个比 Identity Server 4 更优秀的认证授权开源项目

SimpleIdServer

SimpleIdServer 是一个开源框架,支持 OpenID、OAuth 2.0、SCIM2.0、UMA2.0、FAPI 和 CIBA。它简化了自定义访问控制服务器的开发、配置和部署。由于其模块化和可扩展性,SimpleIdServer 可以根据您组织的身份验证、授权等特定需求进行定制。

SimpleIdServer 是第一个使用 .NET 的完全免费并开源的身份认证解决项目。

6863c27969726f8c5dec54503f096761.png

SimpleIdServer 支持支持在各种平台上使用。

1d7130b1509d38f563929b8409de08b3.png

特色功能

单点登录

45ce2572005fef07b734145d24646b81.png

用户身份验证和授权机制,允许个人仅使用一组登录凭据即可访问多个应用程序或系统。

身份管理

1f896e38faf040fffb0c2eda9c4d0f2f.png

管理组织内数字身份的生命周期。为了实现这一目标,我们选择 SCIM 2.0 版作为身份管理的首选协议。

身份配置

e6d5becdfc2a423132f36e066297b86f.png

指在组织的系统和应用程序中创建、修改和管理用户身份及其相关访问权限的过程。

金融级API (FAPI)

03f5e1609d55edfa41a24138afccde56.png

OpenID 基金会制定的一套标准和指南,旨在增强金融行业 API 的安全性和互操作性。

可验证的凭证颁发者

6a64b3476ed9569a68eba265c481f4f3.png

可验证和防篡改格式颁发数字证书的实体或组织,例如教育学位、专业证书或政府颁发的身份证明文件。

工作区概念

f94c44b171bc5a998acaeeb0a89b53f5.png

SimpleIdServer 引入了工作区的概念,其目的是将各种资源(包括客户端和用户)隔离到不同的工作区。

同类产品对比

dd5f749a9064fc448d53786a91f3f04e.png

项目地址

https://github.com/simpleidserver/SimpleIdServer

e7ec85cfbbad4d8ada0a98603f483de6.png

分享

245a8bff443d1f64b1b242c541267e8f.png

点收藏 

c0f6c22779cb925f52035569778b4d3b.png

点点赞

4598a65e115e55377b83aa5d7def5dbe.png

点在看

Blazor Server是一种基于ASP.NET Core的Web开发框架,它允许您使用C#语言开发现代Web应用程序。在Blazor Server中,您可以使用cookie认证授权或JWT认证授权来保护您的应用程序。 ### Blazor Server Cookie认证授权 Blazor Server中的cookie认证授权与ASP.NET Core中的cookie认证授权非常相似。您可以使用ASP.NET Core Identity来管理用户和角色,并使用`[Authorize]`属性来标记需要授权才能访问的组件。 首先,您需要在ASP.NET Core应用程序中启用身份验证和授权。然后,您可以使用Identity提供的API来管理用户和角色。 接下来,您需要在Blazor组件中使用`[Authorize]`属性来标记需要授权才能访问的组件。这将要求用户登录,并检查他们是否具有访问该组件的权限。 最后,您可以使用`HttpContext`类来访问当前用户的身份信息,以及验证他们是否具有所需的角色和权限。 下面是一个示例,演示如何在Blazor Server应用程序中使用cookie认证授权: ``` @page "/myprotectedpage" @attribute [Authorize(Roles = "Admin")] <h1>Welcome to the protected page!</h1> @code { [Inject] private IHttpContextAccessor HttpContextAccessor { get; set; } private ClaimsPrincipal User => HttpContextAccessor.HttpContext.User; protected override async Task OnInitializedAsync() { // Check if the user has the required role if (!User.IsInRole("Admin")) { NavigationManager.NavigateTo("/accessdenied"); } } } ``` 在上面的示例中,我们使用`[Authorize(Roles = "Admin")]`属性来标记需要“Admin”角色才能访问的组件。然后,我们使用`IHttpContextAccessor`来访问当前用户的身份信息,并检查他们是否具有所需的角色。如果用户没有所需的角色,我们将重定向到一个名为“accessdenied”的页面。 ### Blazor Server JWT认证授权 Blazor Server中的JWT认证授权与Blazor WebAssembly中的JWT认证授权非常相似。您可以使用ASP.NET Core Identity和JSON Web Token(JWT)来实现JWT认证授权,并使用`[Authorize]`属性来标记需要授权才能访问的组件。 首先,您需要在ASP.NET Core应用程序中配置JWT认证服务。然后,您可以使用Identity提供的API来管理用户和角色,以及实现基于角色的授权策略。 接下来,您需要在Blazor组件中使用`[Authorize]`属性来标记需要授权才能访问的组件。这将要求用户登录,并检查他们是否具有访问该组件的权限。 最后,您可以使用JWT来验证用户身份,并根据用户的角色和权限来授权访问。 下面是一个示例,演示如何在Blazor Server应用程序中使用JWT认证授权: ``` @page "/myprotectedpage" @attribute [Authorize(Roles = "Admin")] <h1>Welcome to the protected page!</h1> @code { [Inject] private IAccessTokenProvider TokenProvider { get; set; } private async Task<string> GetAccessTokenAsync() { var tokenResult = await TokenProvider.RequestAccessToken(); if (tokenResult.TryGetToken(out var token)) { return token.Value; } else { return null; } } protected override async Task OnInitializedAsync() { var accessToken = await GetAccessTokenAsync(); if (accessToken != null) { // Verify the token and extract the user's claims var handler = new JwtSecurityTokenHandler(); var token = handler.ReadJwtToken(accessToken); var userId = token.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier)?.Value; var roles = token.Claims.Where(c => c.Type == ClaimTypes.Role).Select(c => c.Value).ToList(); // Check if the user has the required role if (!roles.Contains("Admin")) { NavigationManager.NavigateTo("/accessdenied"); } } else { NavigationManager.NavigateTo("/login"); } } } ``` 在上面的示例中,我们使用`[Authorize(Roles = "Admin")]`属性来标记需要“Admin”角色才能访问的组件。然后,我们使用`IAccessTokenProvider`来获取JWT访问令牌,并验证令牌以确定用户的身份和角色。如果用户没有所需的角色,我们将重定向到一个名为“accessdenied”的页面。 希望这些示例能够帮助您实现Blazor Server中的cookie认证授权和JWT认证授权
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值