首页 > SAP > ABAP > SAP WEB 自定义登陆
2023
04-25

SAP WEB 自定义登陆

      隐藏内容需要支付:¥100
任何问题请联系yan252@163.com
立即购买

在SAP中使用Web Dynpro,ITS,FIORI时,可能 需要自定的用户登陆管理,当前需求是在微信公众号打开FIORI APP时,想使用微信的权限网页授权,来验证用户有效性,再加SAP管理操作用户,这样,当用户在公众号打开一个地址(FIORI APP地址)时,带着网页授权的CODE值,在SAP中的鉴权过程中得到些CODE值然后通过微信检验此值的有效性,并得到对应的微信用户信息(微信号,头像,网页授权access_token等信息),并在SAP中判断此用户标识(微信号)有权限同时分配一个SAP用户给它自动登陆,这样可以在SAP管理进行管理可使用的SAP用户,也能限制可使用的微信号,也可以实现不同微信有不同的权限组用户。

通过上面的逻辑,其实也可微信的验证改为与定义网站(比如自定义登陆页面,企业门户等)实际自定义单点登陆效果,如图,这样可以在外部自定义登陆用户,然后给自定义用户分配不同的SAP用户,当用户登陆(自定义登陆页,用自定义用户)成功后,使用配置的SAP用户打开SAP FIORIAPP ,这样实际 SAP用户的共用,只需要少量的SAP用户就能实际外部用户的权限分离。

以下是自定义登陆窗口来登陆一种类似单点登陆的一个方案,这也可以换成自定公司的OA,门户等网站,这样登陆门户后,再打开SAP的WEB时就不用就不用再登陆了,如把门户换为微信公众号的话,那也可以使用微信的安全机制来验证用户的用户性,只需要在SAP端再加一点验证微信用户的有效性就行。

SAP WEB 自定义登陆 - 第1张  | 优通SAP

SAP标准登陆相关可查看类CL_HTTP_SERVER_NET的AUTHENTICATION方法。

以下是部份实现代码,更多细节可依据实际需要进行修改。

1.法一,SERVI登陆

此功能使用的是标准程序中SERVI(服务器数据登陆)方式的一种改装方法,此方法会在每次WEB与SAP数据交互时都需要登陆。可改为在第一次登陆后设置一个定义COOKIE,在第二次SAP交互时不判断URL地址中的CODE,而改为判断COOKIE的有效性,

1.对类进行增强,增加一个自定义方法ZHTTP_AUTHENTICATION_SERVI

2.在类CL_HTTP_SERVER_NET方法AUTHENTICATION,的开头增强,调用前一步的方法

法二,使用标准COOKIE登陆

在标准登陆中用户输入用户密码登陆后,会设置一个SAP_SESSIONID_<ID>_<CLIENT>新COOKIE值,第二次与SAP交互时,系统 会自己用此COOKIE判断 登陆不用再登陆,此方式才应该是WEB的终极办法,所以想在登陆后设置此COOKIE值。

在上面调用SET_CORE_AUTHENTICATE时不会生成SAP_SESSIONID的COOKIE,所以重登陆一下COOKIE,查找发现AUTHENTICATION_SEC_SESSION会创建(无效时创建,有效时检查)COOKIE,但此对使用密码登陆的又以限制创建(代码中有注释)。所以复制AUTHENTICATION_SEC_SESSION为一个新ZAUTHENTICATION_SEC_SESSION方法并增加些创建COOKIE.

并且在打开此登陆方法时,使用GET_SEC_SESSION_ID_FROM_COOKIE得到当前COOKIE,并ZAUTHENTICATION_SEC_SESSION检查有效性,如有效就直接退出使用标准登陆检查 登陆。

2.结果

上面的代码后,当FIORI,或者其它IE打开SAP时,如果URL地址中有CODE参数时就会自动使用代码中的用户密码登陆并打开了,只要在些基础上,把传往的CODE通过接口到登陆的系统(企业门户,OA,微信)上验证一下此CODE就能判断 此CODE值 的有效性了。同时还可以在SAP中使用得到的微信号来取得对应的登陆用户密码来登陆。这样就更完美的解决了单点登陆,比SAP标准的单点登陆还好用,还解决了用户数被 限制 的问题。

      隐藏内容需要支付:¥100
任何问题请联系yan252@163.com
立即购买
最后编辑:
作者:yangsen
本站为个人博客网站,全由我个人维护,我从事SAP开发13年,其它ERP开发7年,基本都是零售行业。本站记录工作学习的过程, 有SAP相关询问专、兼职工作可随时联系我。 有网站相关的问题可直接在文章下方留言,或者联系我。 邮件:yan252@163.com给我。 QQ:415402519

留下一个回复

你的email不会被公开。