azure - 使用来自 Progress Openedge 的 login.microsoft.com 进行 SAML 身份验证

标签 azure ssl https progress-4gl openedge

大家好,有没有人有过让 Progress Openedge 通过 login.microsoft.com 进行身份验证的经验。

特别是需要让它工作所需的证书。

我已经安装了巴尔的摩根证书和 VeriSignClass3PublicPrimaryCertificationAuthority-G5 以及 Progress\Openedge\certs 文件夹中的 SymantecClass3EVSSLCA-G3 证书。

我遇到的错误是

Secure Socket Layer (SSL) failure. error code -55: CONNECT HostName: (login.microsoftonline.com) does not match Certificate: (graph.windows.net) (9318)

我的代码中没有任何地方引用 graph.windows.net,我相信这是证书设置的问题,但我不知道它是什么。

BLOCK-LEVEL ON ERROR UNDO, THROW.

USING OpenEdge.Core.String.
USING OpenEdge.Net.HTTP.ClientBuilder.
USING OpenEdge.Net.HTTP.IHttpRequest.
USING OpenEdge.Net.HTTP.IHttpResponse.
USING OpenEdge.Net.HTTP.RequestBuilder.

DEFINE VARIABLE httpUrl AS CHARACTER NO-UNDO.
DEFINE VARIABLE oRequest AS IHttpRequest NO-UNDO.
DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
DEFINE VARIABLE oRequestBody AS String NO-UNDO.

DEFINE VARIABLE JsonString AS LONGCHAR NO-UNDO.

SESSION:DEBUG-ALERT = TRUE.
httpUrl = "https://login.microsoftonline.com/extSTS.srf".

oRequestBody = new String('samlenvelope').

oRequest = RequestBuilder:Post(httpUrl, oRequestBody)
:ContentType('application/soap+xml; charset=utf-8')
:AcceptJson()
:Request.

oResponse = ClientBuilder:Build():Client:Execute(oRequest).

MESSAGE
oResponse:StatusCode SKIP
oResponse:StatusReason SKIP
VIEW-AS ALERT-BOX.

最佳答案

OpenEdge < 11.7 仍然很常见,因此下面的答案仍然有效。但是,微软更改了证书和别名,这在我的具体答案中得到了解决。

SSL 失败的错误消息告诉我们 HTTPS 证书颁发给了与预期不同的实体。这是较旧的 OpenEdge 所看到的,因为它看不到名为 SAN 的属性,该属性包含站点的所有有效名称。

实际上,您需要做的就是遵循以下 3 个步骤:

第 1 步:您信任该证书吗?

验证您是否信任“stamp2.login.microsoftonline.com”(提出问题时为“login.microsoftonline.com”)。

第 2 步:可选映射

“stamp2.login.microsoftonline.com”可能无法访问。在这种情况下,您需要编辑 OE 服务器的“hosts”文件,以便“stamp2.login.microsoftonline.com”将解析为“login.microsoftonline.com”的 IP(如何编辑“hosts”)文件: https://www.siteground.com/kb/how_to_use_the_hosts_file/ )

第 3 步:替换代码中的 URL

替换

httpUrl = "https://login.microsoftonline.com/extSTS.srf".

httpUrl = "https://stamp2.login.microsoftonline.com/extSTS.srf".

关于azure - 使用来自 Progress Openedge 的 login.microsoft.com 进行 SAML 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44352299/

相关文章:

python - 获取 Azure VMSS 中实例的公共(public) IP?

c# - 以编程方式停止 Azure 函数并再次启动它

Azure Application Insights 控制台日志格式

javascript - 刚刚将我的网站移至 SSL,但我的内容不安全

java - 如何修复 "401 Unauthorized. No Api Key provided"

php - SSL 安全说明

azure - 何时将 OBO 与 Azure 结合使用

ssl - Jetty - .cer/.p7b - 无套件密码(没有共同的密码套件)

ssl - SSL的特性如何对抗IP劫持?

禁用 HTTPS 的通用名称检查的安全隐患