Azure 使用Progress Openedge中的login.microsoft.com进行SAML身份验证

Azure 使用Progress Openedge中的login.microsoft.com进行SAML身份验证,azure,ssl,https,progress-4gl,openedge,Azure,Ssl,Https,Progress 4gl,Openedge,您好,有没有人有过获得Progress Openedge以通过login.microsoft.com进行身份验证的经验 特别是要有证书才能让它工作 我已安装巴尔的摩根证书和VeriSignClass3PublicPrimaryCertificationAuthority-G5 以及Progress\Openedge\certs文件夹中的Symantec Symantec Class3EVSSLCA-G3证书 我得到的错误是 安全套接字层(SSL)故障。错误代码-55:连接主机名:(login.m

您好,有没有人有过获得Progress Openedge以通过login.microsoft.com进行身份验证的经验

特别是要有证书才能让它工作

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

我得到的错误是

安全套接字层(SSL)故障。错误代码-55:连接主机名:(login.microsoftonline.com)不匹配 证书:(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仍然很常见,因此下面的答案仍然有效。但是,Microsoft更改了证书和别名,这在我的具体回答中得到了解决

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”文件:)

步骤3:替换代码中的URL

替换

httpUrl=”“

httpUrl=”“


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

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”文件:)

步骤3:替换代码中的URL

替换

httpUrl=”“

httpUrl=”“


11.7以下的版本可能不支持这一点。你的版本是什么?谢谢你的链接,我们在11.6.3上,这就解释了它。我不确定为每台主机创建一个单独的证书意味着什么,或者如何操作。奇怪的是,证书链上的所有其他URL(portal.azure.com、portal.office365.com等)都能正常工作,只有login.microsoftonline.com不能正常工作。11.7以下的版本可能不支持此功能。你的版本是什么?谢谢你的链接,我们在11.6.3上,这就解释了它。我不确定为每台主机创建一个单独的证书意味着什么,或者如何操作。奇怪的是,证书链上的所有其他URL都在工作,portal.azure.com、portal.office365.com等等,只是login.microsoftonline.com没有。httpUrl=“”)。不是有效的URL。但是,此问题现在已解决,因为sharepoint与o365的其余部分验证到同一域,因此没有证书错误。ThankshttpUrl=”“。不是有效的URL。但是,此问题现在已解决,因为sharepoint与o365的其余部分验证到同一域,因此没有证书错误。谢谢