阿里云函数计算签名认证(iOS实现细节备注)

这篇具有很好参考价值的文章主要介绍了阿里云函数计算签名认证(iOS实现细节备注)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、使用第三方库 AFNetworking进行网络请求。
2、阿里云函数计算签名认证文档
3、文档中添加 CanonicalizedFCHeaders 可以不用添加,CanonicalizedResource如何没有设置Path,在末尾加入“/”就可以了。
4、主要还是 hmac-sha256 签名认证,在实现过程中转base64的问题。
下面则是实现代码:文章来源地址https://www.toymoban.com/news/detail-604148.html

+ (AFHTTPSessionManager *)httpSessionManager:(NSString *)url{
    AFHTTPSessionManager *sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:url]];
    sessionManager.requestSerializer = [AFJSONRequestSerializer serializer];
    sessionManager.responseSerializer = [AFJSONResponseSerializer serializer];
    sessionManager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", nil];
    [sessionManager.requestSerializer setValue:[YTDWindingCalculatorHttp aliSignature:sessionManager] forHTTPHeaderField:@"Authorization"];
    return sessionManager;
}

+ (NSString *)aliSignature:(AFHTTPSessionManager *)sessionManager{
    NSString *accessKeyID = @"xxxxxx";
    NSString *accessKeySecret = @"xxxx";
    NSString *authorization = [NSString stringWithFormat:@"FC %@:",accessKeyID];
    NSMutableArray *signatureArray = [NSMutableArray array];
    [signatureArray addObject:@"POST"];
    [signatureArray addObject:@""];
    [signatureArray addObject:@"application/json"];
    NSString *date = [YTDWindingCalculatorHttp rfc1123String];
    [signatureArray addObject:date];
    [signatureArray addObject:@"/\n"];
    
    //请求头添加content-type 和 date
    [sessionManager.requestSerializer setValue:sessionManager.responseSerializer.acceptableContentTypes.allObjects.firstObject forHTTPHeaderField:@"content-type"];
    [sessionManager.requestSerializer setValue:date forHTTPHeaderField:@"date"];

    NSString *signature = [signatureArray componentsJoinedByString:@"\n"];
    signature = [YTDWindingCalculatorHttp hmac:signature withKey:accessKeySecret];
    
    authorization = [NSString stringWithFormat:@"%@%@",authorization,signature];
    return authorization;
}

+ (NSString *)hmac:(NSString *)content withKey:(NSString *)secret{
    const char *cKey  = [secret cStringUsingEncoding:NSUTF8StringEncoding];
    const char *cData = [content cStringUsingEncoding:NSUTF8StringEncoding];// 有可能有中文 所以用NSUTF8StringEncoding -> NSASCIIStringEncoding
    unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
    CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
    NSData *HMACData = [NSData dataWithBytes:cHMAC length:sizeof(cHMAC)];
    NSData *base64Data = [HMACData base64EncodedDataWithOptions:NSDataBase64Encoding64CharacterLineLength];
    return [[NSString alloc] initWithData:base64Data encoding:NSUTF8StringEncoding];
}

+ (NSString *)rfc1123String{
    time_t date = (time_t)[[NSDate date] timeIntervalSince1970];
    struct tm timeinfo;
    gmtime_r(&date, &timeinfo);
    char buffer[32];
    size_t ret = strftime_l(buffer, sizeof(buffer), "%a, %d %b %Y %H:%M:%S GMT", &timeinfo, NULL);
    if (ret) {
        return @(buffer);
    } else {
        return nil;
    }
}

到了这里,关于阿里云函数计算签名认证(iOS实现细节备注)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里云acp云计算认证考试科目有哪些?

    阿里云ACP云计算认证考试 科目包括以下内容: 阿里云云计算基础知识:包括云计算的定义、特点、服务模式、部署模式、虚拟化技术等相关知识。 阿里云产品:包括阿里云ECS、RDS、SLB、OSS、DNS等核心产品的架构、使用方法、优化技巧等相关知识。 云安全与监控:包括云安全

    2024年02月08日
    浏览(47)
  • 阿里云新版云计算架构师ACE认证专家解读会重磅来袭

    简介: 专家命题人非常解读 9600元全额代金券限量发放!活动钉群:31889256。 3月28日,阿里云新版云计算架构师ACE认证正式升级发布,面向云架构师、解决方案架构师、资深运维/交付等人群,提供技术能力认证。自升级以来,新版ACE认证受到非常多关注者的报考与咨询, 命

    2024年02月12日
    浏览(35)
  • 跨行新手学习并备考阿里云云计算专业认证ACP大概需要多长时间呢?

    阿里云认证是基于核心技术及岗位的权威认证, 阿里云针对不同产品类别、用户成长阶段、生态岗位,精心打造不同的认证考试。 个人:证明您在对应技术领域的专业度,能够基于阿里云产品解决实际问题。获得更多阿里云生态下的就业机会。 公司:通过阿里云认证培养、

    2024年02月15日
    浏览(54)
  • springboot整合https使用自签名证书实现浏览器和服务器之间的双向认证

    效果描述: 本地环境  两台以上电脑  可以实现安装客户端证书的电脑可以访问springboot启动项目,没有安装客户端证书的电脑无法访问springboot启动项目 1.操作:需要安装openssl工具 工具包:Win64OpenSSL_Light-3_3_0.exe 或者Win64OpenSSL_Light-3_3_0.msi  官网:[ Downloads ] - /source/index.html

    2024年04月28日
    浏览(47)
  • 【Django用户认证】通过阿里云如何实现实名认证

    我最近在我的项目上有实名认证的需求,主要实现人名和身份证号码的验证,针对这一块具体怎么做的文章比较少,我解决问题之后,觉得还是把这些坑都写清楚,方便初学者。 网络并非法外之地。然而,却存在部分网络用户利用虚拟的网络空间,实施网络暴力、造谣诽谤、

    2024年02月06日
    浏览(55)
  • SpringBoot+Vue实现阿里云OSS服务器签名直传并且返回回调数据

    vue java 可参考官方文档:如何通过Java在服务端签名直传并设置上传回调_对象存储-阿里云帮助中心  

    2024年02月13日
    浏览(35)
  • 【阿里云】Apsara Clouder云计算专项技能认证-云服务器ECS入门,考试真题分享

    以下是阿里云Apsara Clouder云计算专项技能认证-云服务器ECS入门真题汇总篇分享: 1.下列哪一个不是重置ECS密码的步骤? A. 查看实例详情 B.进入控制台 C.远程连接ECS D.点击控制台“概览” 2.针对云服务器ECS安全组说法正确的是 A.是一种物理防火墙 B.仅用于控制安全组内ECS实例的

    2023年04月08日
    浏览(55)
  • 如何使用阿里云函数计算

    阿里云函数计算(Function Compute)是一种事件驱动的全托管计算服务,您无需管理服务器等基础设施,只需编写代码并上传。以下是使用阿里云函数计算的基本步骤: 开通函数计算服务 : 登录阿里云控制台,搜索“函数计算”,进入函数计算产品页面,点击“立即开通”。

    2024年01月25日
    浏览(36)
  • solidity函数签名的实现-solidity实现智能合约教程(8)

    猛戳订阅学习专栏🍁🍁 👉 solidity系列合约源码+解析 👈 🍁🍁 函数选择器: solidity调用函数时,calldata的前4个字节为指定要调用的函数,这4个字节称为函数选择器。 以下面的代码为例。它通过地址addr的调用合约的transfer方法。 abi.encodeWithSignature(…)返回的前4个字节是函数

    2024年02月16日
    浏览(50)
  • 阿里云云计算工程师ACA认证(Alibaba Cloud Certified Associate - Cloud Computing)考试大纲-V3.0

    阿里云云计算工程师ACA认证(Alibaba Cloud Certified Associate - Cloud Computing)介绍: 阿里云云计算工程师ACA认证(Alibaba Cloud Certified Associate - Cloud Computing)考试是面向云计算行业工作人员的初级认证,主要考核考生对云计算领域知识的整体掌控情况。 通过该技术认证可以有效证明

    2024年02月03日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包