点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我对SAP世界来说还很陌生。 我需要您的帮助以了解我当前面临的问题。
我在SAP MII中添加了自定义操作,该操作将与身份验证系统连接并从OAuth获取令牌。 简单的Java可以按预期工作,但是当我添加与自定义操作相同的类时,出现连接重置错误。
日志:
- 19:30:56.103 [INFO] [GetOauthToken_0]已完成对:XXXXXXXXXX的OAuth令牌
- 19:30:56.170 [ERROR] [GetOauthToken_0]执行OAuth时发生异常:org.w3c.www.protocol.http.HttpException:连接重置
代码:
HttpURLConnection conn =(HttpURLConnection)url.openConnection(); conn.setDoOutput(true); 字符串authStr = sClientId +":" + sSecret; instance.log( LogLevel.INFO ," OAuth令牌客户端ID:" + sClientId); 字符串encodingAuth = DatatypeConverter.printBase64Binary(authStr.getBytes(" UTF-8")); conn.setRequestMethod(" POST"); conn.setRequestProperty(" Authorization"," Basic" + encodingAuth); conn.setRequestProperty(" Content-Length",Integer.toString(postDataLength)); conn.getOutputStream()。write(postData); instance.log( LogLevel.INFO ,"已完成以下操作的OAuth令牌:" + sClientId); 中的Reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); for(int c;(c = in.read())> = 0;){sb.append((char)c); }
任何输入均受到高度赞赏。
为什么不尝试其他方法。 在OAUTH中,我们在应用程序之间交换令牌。 这可以通过使用Java中的servlet来完成,并且可以在SAP MII中轻松开发。
此致
Ankit Gupta
你好迈克,
我的自定义操作将与身份验证(OAUTH)系统集成,并获取给定客户端ID的令牌。 这是对系统的后调用,并将令牌返回。 查看日志,我可以确定http调用运行良好,但是在读取响应时,它会由于连接重置错误而失败。
我还发现最新的SAP MII已更新了自定义操作(在内置Oauth中)。 但是我使用的是SAP 15.0 SP7补丁1。
我还更新了代码以使用HttpsURLConnection而不是HttpURLConnection。 但是,现在我收到类强制转换异常
13:52:45.679 [错误] [GetOauthToken_0]执行OAuth时发生异常:java.lang.ClassCastException:无法将com.sap.engine.httpdsrclient.protocols.instrumented.https.DSRHttpsURLConnection强制转换为类javax.net.ssl .HttpsURLConnection
您要使用"客户端ID"对OKTA进行身份验证吗? 并取回OAUTH令牌。 您从未真正解释过为什么要这样做。 这些信息可能会对人们有所帮助。
我不是OAUTH的专家,但这听起来确实可以在Netweaver用户管理引擎(UME)中完成。 其他人都知道如何使用此魔术吗?
您可能想研究使用Netweaver Destinations,但可能会遇到相同的TLS版本问题。
您可以 还要围绕Netweaver Java API进行研究,有时SAP拥有自己的自定义功能来处理可能还没有该核心JRE版本的东西等等。
在处理自定义操作时,有一个 没什么可考虑的。
仅供参考,您的"无法将类com.sap.engine.httpdsrclient.protocols.instrumented.https.DSRHttpsURLConnection强制转换为类javax.net.ssl.HttpsURLConnection"错误通常是由于Java API发生了更改 一些 指向HttpsURLConnection,因此请确保所有版本均已排序。
致谢,
Christian
感谢您的回复,迈克。 我认为这不能通过用户管理来完成。 因为据我所知,用户管理将控制所有可以登录系统并进行所有SAP MII系统身份验证的人员,因此,如果我的理解有误,请更正我。 但就我而言,我正在连接到外部OAUTH系统(通过进行HTTP POST调用),并尝试获取具有凭据的令牌。 因此,这只是简单的Java HTTP Client应用程序。
一周热门 更多>