`

源于nopcommerce的WebApi认证机制

 
阅读更多
写在前面:
该机制的目的在于验证请求的合法性并对每次请求的数据进行加密,预防重放攻击。
每步请求都要求在header中添加一个固定的头部
key:Authorization
value:HMACSHA256+空格+加密后的验证串

api收到请求后就会获取特定的头部,然后进行拆分,获取参数并分析是否为正确的请求,如果OK,则继续往下进行,如果错误,则提醒非法的访问。


加密串的组成:第一部分加密的AppID,第二部分时间搓,第三部分由AppID和时间搓组成的加密串加密方式可以自己定义
时间搓可用来确定是否为重放攻击。


需要用到的引用
Microsoft.Owin.Security.OAuth
Microsoft.Owin.Security
Microsoft.Owin
Microsoft.AspNet.Identity.EntityFramework
Microsoft.AspNet.Identity.Owin
Microsoft.Owin.Host.SystemWeb (我被它坑了好久)【不安装这个,系统无法识别新的Startup启动类】


下面简单介绍步骤
1、新建一个webapi项目
2、注释掉原有的Global.asax文件中,启动项目
3、新建StartUp启动项,并将Global.asax里面的启动内容,拷贝过来,在程序入口处增加
OwinConfig.Configure(app);
public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            OwinConfig.Configure(app);
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }

4、App_start文件夹中,新增OwinConfig文件
public class OwinConfig
    {
        public static void Configure(IAppBuilder app)
        {
            app.CreatePerOwinContext(ApplicationDbContext.Create);
            app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);

            bool HmacEnabled = false;
            //从配置文件中获取是否开启验证的配置
            bool.TryParse(ConfigurationManager.AppSettings["Authentication:Hmac.Enabled"], out HmacEnabled);
            if (HmacEnabled) //如果为true,表示开启验证
            {
                var authenticationOptions = new AuthenticationOptions();
                authenticationOptions.HmacEnabled = HmacEnabled;
                //初始化AuthInfo的表记录值
                var apiAccountProvider = new ApiAccountProvider();
                if (authenticationOptions.HmacEnabled)
                {
                    //默认请求失效时间0分钟
                    int HmacSignatureValidityPeriod = 0;
                    //从配置文件中获取失效时间
                    int.TryParse(ConfigurationManager.AppSettings["Authentication:Hmac.SignatureValidityPeriod"], out HmacSignatureValidityPeriod);
                    //将配置值赋值给authenticationOptions的失效时间参数
                    authenticationOptions.HmacSignatureValidityPeriod = TimeSpan.FromMinutes(HmacSignatureValidityPeriod);
                    //
                    app.UseHmacAuthentication(new HmacAuthenticationOptions
                    {
                        ApiCredentialsProvider = apiAccountProvider,
                        SignatureValidityPeriod = authenticationOptions.HmacSignatureValidityPeriod
                    });
                }
            }
        }
    }

5、在webapi项目中新增Security文件加,然后把示例代码中的文件按顺序添加进去
6、为了方便演示在LoadApiAccount方法中,我把参数写死了,具体使用时可替换


源码示例地址:http://pan.baidu.com/s/1dFN8eM9
在此要感谢罗总的大力支持!
分享到:
评论

相关推荐

    NopCommerce4.0 支付宝支付插件源码—最新版本可用

    6. **错误处理与日志记录**:为了确保系统的稳定性和安全性,插件还需要有完善的错误处理机制,并记录相关日志,便于排查问题。 7. **安全措施**:插件需遵循支付宝的安全规范,例如使用HTTPS传输敏感数据,防止...

    nopCommerce

    nopCommerce是一款广受欢迎的开源电子商务平台,专为个人学习和商业运营设计。它以其灵活性、可扩展性和安全性而受到开发者的青睐。这个压缩包文件名“nopCommerce_1.70_Source_zh”表明它是nopCommerce的1.70版本,...

    nopCommerce1.5中文版

    9. **API接口**:nopCommerce提供API接口,允许开发者通过编程方式与外部系统交互,如集成ERP、CRM或第三方物流服务。 10. **安装与升级**:安装nopCommerce 1.5中文版通常包括下载压缩包、解压、运行安装向导、...

    nopcommerce_系统开发文档

    Nopcommerce的主题加载机制涉及到几个核心类,它们位于`Nop.Web.Framework.Themes`命名空间下。这些类包括`ThemeableRazorViewEngine`、`ThemeableBuildManagerViewEngine`和`...

    Nopcommerce WeChat微信授权插件

    Nopcommerce是一款开源的、高度可定制的电子商务解决方案,而这款插件则进一步增强了它的用户认证和交互能力。 在了解Nopcommerce WeChat微信授权插件之前,我们首先需要知道Nopcommerce的基本架构。Nopcommerce...

    NopCommerce

    Nopcommerce是国外的一个高质量的开源b2c网站系统,最新版是基于Entity Framework6.0和MVC5.0,使用razor模板引擎,有很强的插件机制,包括支付配送功能都是通过插件来实现的,基于xml的多语言版本,非常灵活的语言...

    NopCommerce源码架构详解

    - **使用场景**:NopCommerce 支持强大的插件机制,允许开发者轻松添加或修改特定功能,如支付网关、配送服务等。 ##### 6. Themes 主题技术 - **简介**:主题技术允许用户定制网站的外观和感觉。 - **使用场景**:...

    nopCommerce_4.30 中文

    【标题】"nopCommerce_4.30 中文"指的是nopCommerce电商平台的4.30版本,该版本的源码已经全部被翻译成了中文。这为中国的开发者提供了一个更加友好的环境,便于理解和使用这个开源电子商务平台。 【描述】"1,4.3...

    nopcommerce系统开发文档_nopCommerce_

    5. 扩展开发:利用插件机制,开发新的功能模块或增强现有功能。 6. 测试调试:确保所有功能正常运行,修复可能出现的bug。 7. 部署上线:将开发好的项目部署到服务器,进行线上测试和调整。 四、关键技术 1. ASP...

    nopCommerce插件安装图解

    nopCommerce是一款开源的电子商务平台,基于.NET Framework构建,旨在提供高度可定制的、灵活的以及安全的网上商店解决方案。在nopCommerce中,插件扮演着关键角色,它们扩展了平台的功能,例如支付处理、物流、营销...

    nopcommerce 4.4 中文语言包

    nopcommerce 4.4 中文语言包,本地化,目前最完整的资源包 language_pack.4.4.xml

    nopcommerce 4.3 中文语言包

    nopcommerce 4.3 中文语言包,本地化,目前最完整的资源包 language_pack.zh-CN.xml

    nopcommerce3.6_1

    NopCommerce是一个开源的电子商务平台,专为中小型企业设计,具有高度可定制性和扩展性。3.6_1 版本是该平台的一个特定迭代,可能包含了一系列的更新、优化和修复,旨在提升用户体验和系统稳定性。 在"nopcommerce...

    Nopcommerce WeChatPay 微信支付 插件

    1. **支付接口集成**:Nopcommerce WeChatPay插件实现了与微信支付API的无缝对接,允许商家在后台配置必要的商户信息,如商户号、支付密钥等,以启用微信支付。 2. **订单处理**:当顾客在Nopcommerce网站上选择...

    nopCommerce_3.9源码

    【描述】提到,通过学习nopCommerce的源代码,可以了解到如何运用MVC架构来构建可扩展和可维护的Web应用。MVC模式将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个主要部分,有助于保持代码的...

    nopCommerce_3.10带汉化包

    【标题】"nopCommerce_3.10带汉化包" 指的是一个特定版本的nopCommerce电子商务平台,该版本已经集成了中文语言包,方便中国用户进行安装和使用。nopCommerce是一款开源的电子商务解决方案,它允许商家构建功能丰富...

    nopCommerce_User_Guide

    ### nopCommerce:开源电子商务解决方案概览 nopCommerce是一款先进的开源电子商务平台,专为构建功能全面、用户友好的在线商店而设计。它不仅提供了强大的后台管理功能,还为前端客户提供了直观且互动的购物体验。...

    Nopcommerce数据库建库脚本

    Nopcommerce数据库建库脚本,还包括一些初始化的数据

    nopCommerce_3.9 中文包

    2. **ASP.NET MVC框架**:Microsoft开发的一种用于构建Web应用程序的技术,利用模型-视图-控制器(MVC)模式,提供更好的代码组织和测试能力。 3. **多语言支持**:nopCommerce具有强大的多语言功能,允许商家为不同...

Global site tag (gtag.js) - Google Analytics