gpt4 book ai didi

azure - Azure 应用程序 list 中的 "encryptedSecretValue"参数中应该包含什么?

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

我正在尝试对 Office365 使用 OAuth 身份验证和 Exchange Web 服务 (EWS)。这是在成功将 OAuth2 与新的 RESTful Graph API 结合使用之后,但发现 Graph API 无法完成我需要对 secret 客户端“仅应用程序”流程执行的操作(这将由守护进程使用,所以没有用户交互)。

在我的 table 上敲了几个小时后,我发现(我希望如此!)带有 secret 客户端 OAuth 授权 header 的 EWS SOAP 事务必须具有使用 X.509 证书创建的承载访问 token ,而不仅仅是使用 X.509 证书创建的 client_id/client_secret您可以与 RESTful Graph API 一起使用。否则,EWS SOAP 会失败,并返回 401 Unauthorized HTTP,并显示一个名为 x-ms-diagnostics 的额外非标准 header ,其值为:

2000001;reason="The access token is acquired using an authentication method that is too weak to allow access for this application. Presented auth strength was 1, required is 2.";error_category="invalid_token"

遗憾的是,Azure 管理门户没有用于管理这些证书的 UI,因此您必须下载、编辑然后上传应用的 list (JSON 文件)。

我创建了一个自签名的 2048 位 X.509 证书(使用 openssl 生成一个名为 cert.pem 的 PEM 文件和一个名为 key.pem 的文件中的 key ),然后使用 cert.pem 生成一个 base64 编码的指纹:

echo $(openssl x509 -in cert.pem -fingerprint -noout) | sed 's/SHA1 Fingerprint=//g' | sed 's/://g' | xxd -r -ps | base64

我按照 this document 第 2 步中的说明进行操作尝试将证书放入 list ​​中(与现有的图形 API client_id/client_secret 设置一起,因为我仍然想在应用程序中尽可能使用更好/更现代的 RESTful Graph API)。为此,我向 JSON 文件中的 passwordCredentials 数组添加了一个新的数组元素数据结构:

{
"customKeyIdentifier": "<base64EncodedFingerprintFromAbove>",
"keyId": "<guid>",
"endDate": "2018-11-24T09:12:01.397205Z",
"type": "AsymmetricX509Cert",
"usage": "Verify",
"value": "MIIDvTCC (lots of certificate) cskQ=="
}

但是,当我现在尝试使用 Azure 管理门户上传编辑后的 list 时,出现错误:

ParameterValidationException=Invalid parameters provided; BadRequestException=Encrypted secret cannot be empty and can be at most 1024 bytes. Parameter name: encryptedSecretValue;

我的 list JSON 文件中没有名为 encryptedSecretValue 的参数,并且我无法通过 Google on what this error means 找到任何内容或what should go in this parameter .

所以我的问题是:应用程序 list JSON 文件中应包含哪些内容,以允许使用证书来获取 secret 客户端访问 token ,以通过 EWS SOAP 查询进行 OAuth 授权?我是不是找错了树?另外,假设我可以让它与 SOAP 一起使用,我可以将生成的访问 token 与 RESTful Graph API 调用以及 EWS SOAP 调用一起使用(即在同一守护程序中混合和匹配 Graph 和 EWS)吗?

最佳答案

passwordCredentials 用于共享 secret /密码(这就是 UI 中显示的内容)。

您需要使用 keyCredentials 来支持 X509/非对称 key 。因此,将上面的 JSON 包装为:

    "keyCredentials": [ 
put your JSON block from above right here
]

将来,我们希望用户体验能够完全简化这个痛点,并实现简单的证书上传。然而,这就是我们现在所拥有的一切。

希望这有帮助,

关于azure - Azure 应用程序 list 中的 "encryptedSecretValue"参数中应该包含什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35610506/

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