gpt4 book ai didi

c# - 如何在 Swift 中创建 SaS token ?

转载 作者:行者123 更新时间:2023-12-03 03:49:12 24 4
gpt4 key购买 nike

这是我到目前为止所拥有的。注释掉的部分是来自微软网站的C#代码,我一直在尝试转换。

import CryptoKit
func GenerateSasToken(resourceUri: String, key: String, policyName: String = "", expiryInSeconds: Int = 3600) -> String?
{
// TimeSpan sinceEpoch = DateTime.UtcNow - new DateTime(1970, 1, 1);
let fromEpochStart = Date().timeIntervalSince1970
let expiry = Int(fromEpochStart) + expiryInSeconds

// string stringToSign = HttpUtility.UrlEncode(resourceUri) + "\n" + expiry;
guard let encodedResourceUri = resourceUri.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed) else { return nil }
let stringToSign = "\(encodedResourceUri)\n\(expiry)"

// HMACSHA256 hmac = new HMACSHA256(Encoding.UTF8.GetBytes(key));
guard let base64Key = key.data(using: .utf8) else { return nil }
let symmetricKey = SymmetricKey(data: base64Key)
let hmac = HMAC<SHA256>.init(key: symmetricKey)

// var signature = Convert.ToBase64String(hmac.ComputeHash(Encoding.UTF8.GetBytes(stringToSign)));

// var sasToken = String.Format(CultureInfo.InvariantCulture, "SharedAccessSignature sr={0}&sig={1}&se={2}&skn={3}", HttpUtility.UrlEncode(resourceUri), HttpUtility.UrlEncode(signature), expiry, keyName);
// return sasToken;

return ""
}

https://learn.microsoft.com/en-us/rest/api/eventhub/generate-sas-token
我正在慢慢地通过 C# 代码进行转换,只是想知道是否有人已经将其转换为 swift。

最佳答案

在客户端生成 sas token 是个坏主意,因为您需要使用存储 key 进行编译,然后攻击者反编译您的应用程序并获取 key ,这将使他们能够访问您的存储/事件中心等。这实际上是 SAS token 背后的想法,因此客户端应用程序请求短暂且有限的 token 来执行通常只是一个操作。

关于c# - 如何在 Swift 中创建 SaS token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67552527/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com