首页
归档
友链
微语
工具
更多
壁纸
推荐
文件
Search
1
unraid 6.8.2无损升级6.9.1教程
11,470 阅读
2
docker-compose部署kodbox
2,202 阅读
3
树莓派NAS(二)——OpenMediaVault安装
2,199 阅读
4
CloudFlare Workers 反代任意网站
2,071 阅读
5
树莓派NAS(三)——OpenMediaVault的基本设置
1,978 阅读
开发
微服务
DotNet
数据库
Docker
缓存
k8s
Consul
Net Core
IdentityServer
工控
SqlServer
MySql
系统
Windows
Linux
建站
CDN
DNS
Typecho
Github
GitHub Actions
Nas
其它
登录
Search
标签搜索
Docker
Linux
NAS
树莓派
阿里云盘
CDN
Windows10
Asp .Net Core
C#
Github
Docker Compose
CentOS
WSL
运维
OpenMediaVault
微服务
Consul
服务发现
Typecho
SQL
枫殇NET开发
累计撰写
59
篇文章
累计收到
165
条评论
首页
栏目
开发
微服务
DotNet
数据库
Docker
缓存
k8s
Consul
Net Core
IdentityServer
工控
SqlServer
MySql
系统
Windows
Linux
建站
CDN
DNS
Typecho
Github
GitHub Actions
Nas
其它
页面
归档
友链
微语
工具
壁纸
推荐
文件
搜索到
24
篇与
的结果
2024-07-24
探索Identity Server4的核心功能与应用
在现代应用程序开发中,身份认证和授权是确保系统安全的重要环节。随着分布式系统和微服务架构的流行,我们需要一种可靠的方法来管理用户身份和权限。Identity Server4正是为此而生。本文将带领大家深入了解Identity Server4的核心功能和应用,帮助我们更好地实现安全的身份认证与授权。什么是Identity Server4?Identity Server4是一个基于ASP.NET Core的开放源代码框架,用于实现OAuth 2.0和OpenID Connect标准的身份认证和授权服务。它允许我们在应用程序中集成单点登录(SSO)、令牌管理和多种认证机制,从而为用户提供安全、统一的身份管理体验。核心功能支持OAuth 2.0和OpenID ConnectOAuth 2.0和OpenID Connect是现代身份认证和授权的核心协议。OAuth 2.0主要用于授权,而OpenID Connect则是在OAuth 2.0之上扩展的认证协议。通过这两个协议,Identity Server4可以实现以下功能:授权码模式:适用于服务器端应用程序,用户通过浏览器进行认证,获得授权码后由服务器端交换令牌。隐式模式:适用于单页应用(SPA),用户直接在浏览器中获得访问令牌。客户端凭证模式:适用于机器对机器(M2M)通信,使用客户端凭证直接获取访问令牌。密码模式:适用于受信任的客户端,用户直接提供用户名和密码获取访问令牌。灵活的认证方式Identity Server4支持多种认证方式,包括:本地认证:使用用户名和密码进行认证。外部认证:集成第三方身份提供商(如Google、Facebook、Microsoft)进行认证。多因素认证(MFA):通过短信、邮件或专用应用程序进行额外的身份验证,提高安全性。单点登录(SSO)通过单点登录功能,用户只需在一个地方进行身份验证,即可访问多个应用程序。这不仅提高了用户体验,还减少了用户多次输入凭证的麻烦,提高了安全性。API保护Identity Server4可以保护我们的API,确保只有经过授权的客户端和用户才能访问。通过配置API资源和范围,我们可以精细地控制每个客户端的访问权限。实践应用安装和配置Identity Server4在开始使用Identity Server4之前,我们需要在ASP.NET Core项目中安装相关的NuGet包。然后,通过配置Identity Server4的服务和中间件,我们可以轻松地集成身份认证和授权功能。首先,我们需要在项目中安装Identity Server4的NuGet包:dotnet add package IdentityServer4接着,我们在Startup.cs文件中配置Identity Server4:public void ConfigureServices(IServiceCollection services) { services.AddIdentityServer() .AddDeveloperSigningCredential() // 仅用于开发环境 .AddInMemoryIdentityResources(Config.GetIdentityResources()) .AddInMemoryApiResources(Config.GetApiResources()) .AddInMemoryClients(Config.GetClients()) .AddTestUsers(Config.GetUsers()); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseIdentityServer(); app.UseMvcWithDefaultRoute(); }在上述配置中,我们使用了内存存储来管理身份资源、API资源和客户端。这种方式适用于开发和测试环境。在生产环境中,我们应该使用数据库来存储这些信息。定义配置接下来,我们需要定义Identity Server4的配置,包括身份资源、API资源和客户端。在一个独立的配置文件中(例如Config.cs),我们可以这样定义:public static class Config { public static IEnumerable<IdentityResource> GetIdentityResources() { return new List<IdentityResource> { new IdentityResources.OpenId(), new IdentityResources.Profile() }; } public static IEnumerable<ApiResource> GetApiResources() { return new List<ApiResource> { new ApiResource("api1", "My API") }; } public static IEnumerable<Client> GetClients() { return new List<Client> { new Client { ClientId = "client", AllowedGrantTypes = GrantTypes.ClientCredentials, ClientSecrets = { new Secret("secret".Sha256()) }, AllowedScopes = { "api1" } } }; } public static List<TestUser> GetUsers() { return new List<TestUser> { new TestUser { SubjectId = "1", Username = "alice", Password = "password" }, new TestUser { SubjectId = "2", Username = "bob", Password = "password" } }; } }保护API为了保护我们的API,我们需要在API项目中配置JWT令牌的验证。首先,安装相应的NuGet包:dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer然后,在Startup.cs文件中配置JWT验证:public void ConfigureServices(IServiceCollection services) { services.AddAuthentication("Bearer") .AddJwtBearer("Bearer", options => { options.Authority = "https://localhost:5001"; // Identity Server4的地址 options.RequireHttpsMetadata = false; options.Audience = "api1"; }); services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseAuthentication(); app.UseMvc(); }通过上述配置,我们的API将仅允许持有有效JWT令牌的请求访问,从而实现安全保护。结论Identity Server4为我们提供了强大且灵活的身份认证和授权解决方案。通过支持OAuth 2.0和OpenID Connect协议,Identity Server4能够满足现代应用程序的安全需求。在实际应用中,我们可以根据需要选择不同的认证方式,并利用其丰富的配置选项来保护API和管理用户身份。希望通过本文的介绍,大家能够更好地理解并应用Identity Server4,为自己的项目增加一层安全保障。
2024年07月24日
142 阅读
0 评论
0 点赞
2023-10-29
使用Docker Buildx构建多架构多平台Docker镜像
Buildx 是一款用于通过 BuildKit 扩展构建功能的 Docker CLI 插件,使用 Buildx,我们无需对 Dockerfile 进行任何修改,就可以构建不同 CPU 架构的 Docker 镜像,并支持推送到 Docker Hub。注意:在开始之前,默认已经安装好了 64 位的 Docker,且 Docker 版本大于 19.03。安装 Docker Buildx(1)使用二进制安装# 下载二进制文件 wget https://github.com/docker/buildx/releases/download/v0.11.2/buildx-v0.11.2.linux-amd64 # 创建文件夹 mkdir -p $HOME/.docker/cli-plugins # 移动文件 mv buildx-v0.11.2.linux-amd64 $HOME/.docker/cli-plugins/docker-buildx # 赋予二进制文件执行权限 chmod +x $HOME/.docker/cli-plugins/docker-buildx(2)编译二进制文件安装建议采用编译安装的方式,避免在接下来的过程中出现奇怪的错误。export DOCKER_BUILDKIT=1 docker build --platform=local -o . "https://github.com/docker/buildx.git" mkdir -p $HOME/.docker/cli-plugins mv buildx $HOME/.docker/cli-plugins/docker-buildx chmod +x $HOME/.docker/cli-plugins/docker-buildx启用 Buildx 插件Docker Buildx 属于实验性功能,在确保 Docker 版本不低于 19.03 ,通过执行以下命令开启新特性,以启用 buildx 插件。export DOCKER_CLI_EXPERIMENTAL=enabled初始化 Docker Buildxdocker buildx create --name builderx docker buildx use builderx docker buildx inspect --bootstrap启用 binfmt_misc如果你使用的是 Docker 桌面版(包含 macOS 和 Windows)默认已启用,而对于 Linux 系统,可通过运行一个特权容器来启用 binfmt_miscdocker run --privileged --rm tonistiigi/binfmt --install all验证是binfmt_misc是否开启:ls -al /proc/sys/fs/binfmt_misc/buildx 会通过 QEMU 模拟器和 binfmt_misc 模拟不同平台构建镜像,请查看是否包含 qemu-* 文件。构建多平台镜像可提前通过 docker login 命令登录 Docker Hub,在完成构建多平台镜像后,会同时推送镜像至 Docker Hub。安装并启用后,我们就可以使用 Docker Buildx 来构建多平台镜像了,以往我们进行构建镜像的命令:build -t ${IMAGE_NAME}:${VERSION} .使用 Docker Buildx 体验上与 docker build 用法基本相同,构建多平台的命令为:docker buildx build --platform=linux/amd64,linux/arm/v7,linux/arm64/v8 -t ${IMAGE_NAME}:${VERSION} . --push--platform :指定需要构建的平台,例如:linux/amd64、linux/arm64或darwin/amd64;--push :指构建完毕后自动推送到 Docker hub 仓库;-t :镜像的名称及 tag;. :表示 Dockerfile 文件位于当前路径下。Docker 镜像完成构建、推送后,我们可以在 Docker Hub 找到对应镜像的 tag 就可以看到支持多个平台。
2023年10月29日
435 阅读
0 评论
0 点赞
2023-10-29
WallaBag - 开源网络书签、稍后阅读工具
Wallabag 是基于Symfony框架开发的一款开源的网络书签、稍后阅读工具,可通过浏览器、手机、Kindle等方式进行内容收藏,支持自动标签规则让分类更简单,拥有中文界面,提供Android、iOS、Windows、Chrome、Firefox、Opera、PocketBook、Kobo、Kindle平台客户端。有意思的是,Wallabag支持生成RSS,让你在RSS阅读器中阅读自己保存的文章。项目地址Github - WallaBagDocker 部署安装 docker# 安装 docker curl -sSL https://get.docker.com/ | sh # 启动 docker systemctl start docker # 设置为开机启动 systemctl enable docker创建/运行容器docker run -d \ --name=wallabag \ -v $PWD/wallabag/data:/var/www/wallabag/data \ -v $PWD/wallabag/images:/var/www/wallabag/web/assets/images \ -p 80:80 \ -e "SYMFONY__ENV__DOMAIN_NAME=http://www.yourdomain.com" \ --restart=always \ wallabag/wallabag:latest参数说明:这里数据库使用的是 sqlite,如果需要使用 MariaDB、MySQL、PostgreSQL、Redis,更多配置信息,请查看文档 ;数据存储路径:命令执行过程会自动在 $PWD 即当前路径下创建 wallabag 文件夹存储数据。默认端口为80端口,即-p 80:80。变更端口,例如变更80端口为7880端口,则修改为 -p 7880:80 ;运行前,请将 http://yourdomain.com 修改成你自己的域名;执行命令后,需要稍等片刻,打开浏览器输入 http://www.yourdomain.com 即可进入 WallaBag 登录页面。默认账号:wallabg、密码:wallabag
2023年10月29日
521 阅读
0 评论
0 点赞
2021-11-29
SQL Server 临时表的删除
临时表与一般的表不同,它是保存到tempDb表中。临时表的表名与你所建的表名也不一样,因为他要为不同人的相同操作创建不同的临时表。
2021年11月29日
452 阅读
0 评论
0 点赞
2021-08-22
docker-compose部署kodbox
可道云,原名芒果云,是基于Web技术的私有云在线文档管理解决方案。
2021年08月22日
2,202 阅读
4 评论
0 点赞
1
2
...
5