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

阿里云函数客户端调用-签名 如果是自己写http调用,关键就是签名算法,本文分享实操中的注意点。 阅读详情

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

+ (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;
    }
}

【教程】app备案流程简单三部曲即可完成 —APP备案的原理是基于原有的工信部域名备案系统,如果已经有了域名备案,无需新增备案主体;只需要在之前的域名备案系统里面,新增APP信息,收集的APP信息主要包括APP包名和签名及公钥这3项;2. 应用信息登记:开发者需要在应用商店或应用发布平台上进行应用信息登记,填写应用名称、应用版本号、应用描述、应用类型、所属类别、收费方式、开发机构、联系方式等信息。如果是第一次备案,根据阿里云官网教程操作即可在备案列表里面,域名备案信息里面,点击新增APP按钮。如图,点击新增APP之后,页面会提示输入APP名字。 阅读详情

相关推荐

iOS个人开发者APP备案:无服务器、纯本地应用3个解决方案实测

本文为iOS个人开发者提供无服务器、纯本地应用的APP备案实战指南,详细介绍了三种合规路径:静态页面域名备案术、域名转接备案方案和服务商特殊通道。通过实测案例和避坑指南,帮助开发者低成本高效完成ICP备案,顺利实现APP上架。

weixin_33704591的博客 678

阿里云 云数据库 RDS 版 公共请求参数 签名结果串 Signature PHP生成方法,亲测实例可用 PHP签名生成

首先看下阿里的签名机制:签名机制,好吧,太多太乱的。不过慢慢看,还是能看懂。 PHP,编写的代码: function getSignature($data = []) { $key = env('AKI', '');//这里是阿里云的accesskeyid 和accesskeysecret $secret = env('AKS', ''); //这是请求api 的公共请求参数...

投资自己 2384

aliyun-signature:阿里云Api签名

阿里云签名 Install npm i aliyun-sign --save Usage 创建签名结构体,使用发起请求 const axiso = require('axios') const Sign = require('aliyun-sign').Sign const sign = new Sign({ AccessKeyId: 'your AccessKeyId', AccessKeySecret: 'your AccessKeySecret' }) /// 阿里云API必须参数示例 /// 公共参数也是在这里定义 const params = { Action: 'DescribeLoadBalancerAttribute', LoadBalancerId: 'your LoadBalancerId', RegionId: 'cn-hang

PHP实现阿里云HMAC-SHA1签名方法封装

以下是阿里签名机制的说明 以下是PHP具体实现方法封装 class register{ static $AccessKeyId = 'Your accessKeyId'; static $AccessKeySecret = 'Your accessKeySecret'; static $AliHost = 'http://domain.aliyuncs.com/?'; //查询域名 public static function searc

weixin_48457745的博客 997

js计算阿里云API签名值.zip

关于阿里云物联网云平台开放接口调用时API签名值计算,官方有JAVA、.net等教程,但是没有js计算签名值。适用于小程序。

动态掩码语言模型(MLM)优化策略:效率提升与最新技术实践

本文深入探讨了动态掩码语言模型(MLM)的优化策略与技术实践,涵盖核心原理、效率优化及2025年最新突破。重点解析了动态掩码在提升模型性能中的关键作用,包括工程实现、掩码策略演进及混合专家动态掩码等创新技术,为自然语言处理领域的研究与应用提供实用指南。

vscode5coder的博客 227

阿里云APP备案详细教程 使用AppUploader获取iOS与安卓公钥签名信息

APP备案是应用上架的必要步骤,本文逐步讲解开发者实名认证、应用信息登记等流程,并重点演示在阿里云备案中如何利用AppUploader工具查看和获取公钥证书、SHA-1指纹等关键信息,适用于iOS和安卓平台,帮助开发者高效完成备案申请。

2501_91373349的博客 207

电子结构设计(EMD)十年知识总结

客官,你的面相是做结构设计的奇才~1. 材料选择【一出手的0.1s就败了】2. 钣金件设计【折来折去有啥难】3. 塑胶件设计【看着好复杂】4. 型材件设计【凭啥不让我设计】5. 电子结构(PCBA)设计【静电肿么要我背锅】6. 包装设计【要的就是金玉其外,败絮其中】7. 外观(工业)设计【好不好看,谁说了算】8. 标签设计【】9. 标准件选择【一个螺丝难倒英雄汉/提起螺丝,英雄气短】10. 计算仿...

wfeng86的博客 1569

iOS https 自制证书 单向 双向 验证,以及服务器(Nginx)配置

一、http和https的区别与原理 介绍原理的博文太多了,这里列出一篇详细的: IOS 使用自签名证书开发HTTPS文件传输 二、证书的类型和自制证书生成 1.什么是数字证书(Certificate) 在HTTPS的传输过程中,有一个非常关键的角色——数字证书,那什么是数字证书?又有什么作用呢? 所谓数字证书,是一种用于电脑的身份识别机制。由数字证书颁发机构(CA)对使用私钥创建的签名请求文件做的签名(盖章),表示CA结构对证书持有者的认可。数字证书拥有以下几个优点: 使用数字证书能够.

doubleface999的博客 2478

更换光猫的原理与方法

当你给装维打电话说你需要更换光猫时,对于装维来说,他并不需要知道怎么更换,他只需要生成一张工单,由后台进行业务操作后,在去用户家把新光猫给装好即可,此时装维到底起到了什么作用呢?我想可能只是运输员吧,把一个设备从一个地方运到另一个地方罢了,此时并不能指望装维做什么,因为本质上来说装维的能力真的很差很差,我是不知道那些装维哪来的勇气做视频,还说自己什么什么能力很强?很强吗?吹牛的技术确实很强。 更换光猫之前,需要先明白为什么要更换光猫,怎么更换光猫,更换后不能用怎么办?怎么才能更换成功,换光猫以后被限速了怎么

qq_34146290的博客 1万+

AP发票批量付款程序(WEB ADI)

CREATE OR REPLACE PACKAGE MEW_AP_BATCH_PAYMENTS_PKG IS   PROCEDURE MAIN(P_BATCH_ID          NUMBER                 ,P_ORG_ID            NUMBER                 ,P_BANK_ACCOUNT_NAME VARCHAR2

储藏室 5051

App备案指南

—APP备案的原理是基于原有的工信部域名备案系统,如果已经有了域名备案,无需新增备案主体;只需要在之前的域名备案系统里面,新增APP信息,收集的APP信息主要包括APP包名和签名及公钥这3项;2. 应用信息登记:开发者需要在应用商店或应用发布平台上进行应用信息登记,填写应用名称、应用版本号、应用描述、应用类型、所属类别、收费方式、开发机构、联系方式等信息。如果是第一次备案,根据阿里云官网教程操作即可在备案列表里面,域名备案信息里面,点击新增APP按钮。如图,点击新增APP之后,页面会提示输入APP名字。

kyuiuyrtyer的博客 593

速腾聚创激光雷达复现FAST-LIO

记录复现FAST-LIO算法的过程和,代码梳理和理解。FAST-LIO的简化版、注释版。速腾激光雷达

abanchao的博客 2930
上一篇: AppStore 如何下载国外的应用教程
下一篇: Xcode 15 编译出错问题解决
蟒蛇_AutoFire
博客等级 码龄16年 21粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值