重写AgileEAS.NET SOA 中间件平台账号密码的加密算法

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 一、平台简介      AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台。用于帮助中小型软件企业建立一条适合市场快速变化的开发团队,以达到节省开发成本、缩短开发时间,快速适应市场变化的目的。

一、平台简介

     AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台。用于帮助中小型软件企业建立一条适合市场快速变化的开发团队,以达到节省开发成本、缩短开发时间,快速适应市场变化的目的。

     AgileEAS.NET SOA中间件平台提供了敏捷快速开发软件工程的最佳实践,通过提供大量的基础支撑功能如IOC、ORM、SOA、分布式体系及敏捷并发开发方法所支撑的插件开发体系,以及提供了大量的实体、数据模型设计生成工具、代码生成工具,用于帮助中小软件开发商快速成长。

     AgileEAS.NET平台充分把握目前软件行业快速发展的新趋势,基于敏捷并行开发、快速适应市场这样淳朴的软件工程实践,采用业界广泛使用的Microsoft .Net构件(组件)开发技术实践了这种开发思想,帮助软件企业实现“敏捷变化、快速适合”的目标,从而帮助软件企业在激烈的市场竞争中赢得先机并获得更高的回报。

二、账号加密、验证算法的替换

      AgileEAS.NET SOA 中间件平台一直使用内置的密码加密算法,随着很多使用者提出,为了系统的安全需要,希望能提供一策略,用自己的加密算法算法替换AgileEAS.NET SOA 中间件平台内置的密码加密算法。

     为了实现这种需求,我们定义了密码提供者接口IPasswordProvider:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EAS.Explorer
{
    /// <summary>
    /// 用户密码提供者接口。
    /// </summary>
    public interface IPasswordProvider
    {
        /// <summary>
        /// 加密指定的密码。
        /// </summary>
        /// <param name="password">要加密的密码。</param>
        ///<returns>加载后的密码。</returns>
        byte[] Encrypt(string password);

        /// <summary>
        /// 验证给定的密码是否和指定的密钥匹配。
        /// </summary>
        /// <param name="password">要验证的密码。</param>
        /// <param name="key">要验证的密钥。密钥的长度为64个字节。</param>
        /// <returns>如果可以通过指定的密钥生成和key相匹配的密钥,则返回true;否则返回false。</returns>
        bool Verify(string password, byte[] key);
    }
}

     IPasswordProvider接口之中定义一个两个方法,Encrypt方法用于生成密码对应的加算后的密码,Verify方法用于对明文密码和加密后的密码进行比对。

三、实现和配置

    下面我就以某一个朋友的实现为例,他想把密码加密算法换成md5,咱们来看看具体的做法。

     首先要建一个类库项目,并且引用EAS.Explorer、EAS.MicroKernel、EAS.Explorer程序集,建立一个类并实现IPasswordProvider接口,项目代码结构如下:

image

     MD5Password代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using EAS.Explorer;
using System.Security.Cryptography;
using System.Text;
using System.IO;
using System.Text;

namespace My.Passwords
{
    public class MD5Password : IPasswordProvider
    {
        #region IPasswordProvider 成员

        public byte[] Encrypt(string password)
        {
            byte[] result = Encoding.Default.GetBytes(password.Trim());
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] output = md5.ComputeHash(result);
            byte[] buffer = new byte[64];
            Buffer.BlockCopy(output, 0, buffer, 0, 16);
            return buffer;
        }

        public bool Verify(string password, byte[] key)
        {
            byte[] result = Encoding.Default.GetBytes(password.Trim());
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] output = md5.ComputeHash(result);
            byte[] buffer = new byte[64];
            Buffer.BlockCopy(output, 0, buffer, 0, 16);
            return EAS.Security.Bytes.Equals(buffer, key);
        }

        #endregion
    }
}

     编译代码得到My.Passwords.dll,然后修改相关的配置文件,如EAS.SOA.Server.exe.config、Web.Config,加入如下配置:

<!--密码算法-->
      <object name="PasswordProvider" assembly="My.Passwords" type="My.Passwords.MD5Password" LifestyleType="Singleton" />

     结束配置。

四、例子代码下载

     本文涉及的领域模型设计器代码插件例子,源代码已经一并放在了AgileEAS.NET SOA 中间件的最新版之中,请大请通过AgileEAS.NET SOA 中间件平台官方网站下载,或者通过以下方式下载:

     直接下载:AgileEAS.NET SOA 5.2 下载http://112.74.66.105/downloads/eas/agileeas.net.5.rar

     SVN更新:https://112.74.66.105/svn/eas/5.0,登录用户:eas,密码eas.

     AgileEAS.NET SOA 中间件平台管理员:Administrator,登录密码sa

     直接下载的压缩包可能会有一定的时间差,即有可能不一定是最新版本,建议大家都通过SVN下载最新版本。

五、联系我们

     为了完善、改进和推广AgileEAS.NET而成立了敏捷软件工程实验室,是一家研究、推广和发展新技术,并致力于提供具有自主知识产权的业务基础平台软件,以及基于业务基础平台了开发的管理软件的专业软件提供商。主要业务是为客户提供软件企业研发管理解决方案、企业管理软件开发,以及相关的技术支持,管理及技术咨询与培训业务。

     AgileEAS.NET平台自2004年秋呱呱落地一来,我就一直在逐步完善和改进,也被应用于保险、医疗、电子商务、房地产、铁路、教育等多个应用,但一直都是以我个人在推广,2010年因为我辞职休息,我就想到把AgileEAS.NET推向市场,让更多的人使用。

     技术团队成员都是合作多年的老朋友,因为这个平台是免费的,我们的营运开支主要靠为客户提供咨询服务所得,我们都是因为程序员的那种理想与信念坚持,在此我感谢一起奋斗的朋友和一直支持我们工作的客户、朋友。

团队网站:http://www.agilelab.cn

AgileEAS.NET网站:http://www.smarteas.net

官方博客:http://eastjade.cnblogs.com

QQ:47920381

AgileEAS.NET QQ群:

113723486(AgileEAS SOA 平台)/上限2000人

199463175(AgileEAS SOA 交流)/上限2000人

116773358(AgileEAS.NET SOA 平台)/上限2000人

邮件:james@agilelab.cn,mail.james@qq.com,

电话:18629261335。

 

我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan

目录
相关文章
|
9月前
|
开发框架 .NET API
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用 (下)
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用 (下)
|
9月前
|
存储 JSON 开发框架
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用 (上)
10分钟简单学习net core集成jwt权限认证,快速接入项目落地使用
|
API 微服务
【NET CORE微服务一条龙应用】第三章 认证授权与动态权限配置
【NET CORE微服务一条龙应用】第三章 认证授权与动态权限配置 介绍 系列目录:【NET CORE微服务一条龙应用】开始篇与目录 在微服务的应用中,统一的认证授权是必不可少的组件,本文将介绍微服务中网关和子服务如何使用统一的权限认证 主要介绍内容为: 1、子服务如何实现和网关相同的鉴权方式 2.
2793 0
|
中间件 测试技术 数据安全/隐私保护
【.NET Core项目实战-统一认证平台】第十章 授权篇-客户端授权
原文 【.NET Core项目实战-统一认证平台】第十章 授权篇-客户端授权 【.NET Core项目实战-统一认证平台】开篇及目录索引 上篇文章介绍了如何使用Dapper持久化IdentityServer4(以下简称ids4)的信息,并实现了sqlserver和mysql两种方式存储,本篇将介绍如何使用ids4进行客户端授权。
3023 0
|
SQL 存储 关系型数据库
【.NET Core项目实战-统一认证平台】第九章 授权篇-使用Dapper持久化IdentityServer4
原文:【.NET Core项目实战-统一认证平台】第九章 授权篇-使用Dapper持久化IdentityServer4 【.NET Core项目实战-统一认证平台】开篇及目录索引 上篇文章介绍了IdentityServer4的源码分析的内容,让我们知道了IdentityServer4的一些运行原理,这篇将介绍如何使用dapper来持久化Identityserver4,让我们对IdentityServer4理解更透彻,并优化下数据请求,减少不必要的开销。
1358 0
|
负载均衡 中间件 .NET
【.NET Core项目实战-统一认证平台】第八章 授权篇-IdentityServer4源码分析
原文:【.NET Core项目实战-统一认证平台】第八章 授权篇-IdentityServer4源码分析 【.NET Core项目实战-统一认证平台】开篇及目录索引 上篇文章我介绍了如何在网关上实现客户端自定义限流功能,基本完成了关于网关的一些自定义扩展需求,后面几篇将介绍基于IdentityServer4(后面简称Ids4)的认证相关知识,在具体介绍ids4实现我们统一认证的相关功能前,我们首先需要分析下Ids4源码,便于我们彻底掌握认证的原理以及后续的扩展需求。
2729 0
|
SQL 缓存 中间件
【.NET Core项目实战-统一认证平台】第七章 网关篇-自定义客户端限流
原文:【.NET Core项目实战-统一认证平台】第七章 网关篇-自定义客户端限流 【.NET Core项目实战-统一认证平台】开篇及目录索引 上篇文章我介绍了如何在网关上增加自定义客户端授权功能,从设计到编码实现,一步一步详细讲解,相信大家也掌握了自定义中间件的开发技巧了,本篇我们将介绍如何实现自定义客户端的限流功能,来进一步完善网关的基础功能。
1154 0
|
缓存 中间件 测试技术
【.NET Core项目实战-统一认证平台】第六章 网关篇-自定义客户端授权
原文:【.NET Core项目实战-统一认证平台】第六章 网关篇-自定义客户端授权 【.NET Core项目实战-统一认证平台】开篇及目录索引 上篇文章我们介绍了网关使用Redis进行缓存,并介绍了如何进行缓存实现,缓存信息清理接口的使用。
1446 0
|
缓存 安全 中间件
【.NET Core项目实战-统一认证平台】第二章网关篇-定制Ocelot来满足需求
原文:【.NET Core项目实战-统一认证平台】第二章网关篇-定制Ocelot来满足需求 【.NET Core项目实战-统一认证平台】开篇及目录索引 这篇文章,我们将从Ocelot的中间件源码分析,目前Ocelot已经实现那些功能,还有那些功能在我们实际项目中暂时还未实现,如果我们要使用这些功能,应该如何改造等方面来说明。
1282 0
|
索引 微服务
【.NET Core微服务实战-统一身份认证】开篇及目录索引
原文:【.NET Core微服务实战-统一身份认证】开篇及目录索引 简介 ​ 学习.NETCORE也有1年多时间了,发现.NETCORE项目实战系列教程很少,都是介绍开源项目或基础教程,对于那些观望的朋友不能形成很好的学习思路,遇到问题怕无法得到解决而不敢再实际项目中尝试,今天我想通过项目系列实战的方式,进一步推广应用.NETCORE,让大家感受它的魅力以及已经无所不能的神奇魔力,我会从实际项目开发的流程中带大家一起来学习和使用.NETCORE,对于项目实战系列写什么内容纠结很久,最后想想直接从基础设施开始着手,一步一步延伸到完整项目,第一篇就从统一身份认证模块开发详细介绍项目开发的过程。
1784 0