大家好,有没有人有过让 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/