Tnedija ta' SAP GUI minn browser

L-ewwel ktibt dan l-artikolu fil tiegħi blog, biex wara ma nfittexx u niftakru mill-ġdid, iżda peress li ħadd ma jaqra l-blog, xtaqt naqsam din l-informazzjoni ma’ kulħadd, f’każ li xi ħadd isibha utli.

Waqt li kienet qed taħdem fuq l-idea ta’ servizz ta’ reset tal-password fis-sistemi SAP R/3, qamet mistoqsija - kif tniedi SAP GUI bil-parametri meħtieġa mill-browser? Peress li din l-idea kienet timplika l-użu ta’ servizz tal-web, l-ewwel wieġbet għal talba SOAP mill-GUI SAP u bagħtet ittra b’link għal paġna web b’kitba biex terġa’ tissettja l-password għal dik inizjali, u mbagħad turi lill-utent. messaġġ dwar ir-reset tal-password b'suċċess u l-wiri ta 'din il-password inizjali ħafna, allura nixtieq li din il-paġna jkollha wkoll link biex tniedi SAP GUI. Barra minn hekk, din il-link għandha tiftaħ is-sistema mixtieqa, u, preferibbilment, bl-oqsma tal-login u l-password mimlija f'daqqa: l-utent ikollu biss jimla l-password produttiva darbtejn.

It-tnedija ta 'SAP Logon ma kienx interessanti għall-iskop tagħna, u meta tmexxi sapgui.exe kien impossibbli li jiġi speċifikat l-isem tal-klijent u l-utent, iżda kien possibbli li titnieda sistema mhux definita f'SAP Logon. Min-naħa l-oħra, it-tnedija ta 'SAP GUI b'parametri arbitrarji tas-server ma kinitx partikolarment rilevanti: jekk qed insolvu l-problema tar-reset tal-password ta' utent, allura x'aktarx diġà għandu l-linja meħtieġa f'SAP Logon, bis-settings li jeħtieġ, u hemm m'hemmx bżonn li mess ma tiegħu stess. Iżda r-rekwiżiti speċifikati ġew sodisfatti mit-teknoloġija SAP GUI Shortcut u l-programm sapshcut.exe innifsu, li għamilha possibbli li titnieda l-SAP GUI billi tuża "shortcut" speċifika.

Issolvi l-problema head-on: tniedi sapshcut.exe direttament mill-browser billi tuża oġġett ActiveX:

function openSAPGui(sid, client, user, password) {
var shell = new ActiveXObject("WScript.Shell");
shell.run('sapshcut.exe -system="'+sid+'" -client='+client+' -user="'+user+'" -pw="'+password+'" -language=RU');
}

Is-soluzzjoni hija ħażina: l-ewwelnett, taħdem biss fl-Internet Explorer, it-tieni nett, teħtieġ settings ta 'sigurtà xierqa fil-browser, li f'organizzazzjoni tista' tkun ipprojbita fil-livell tad-dominju, u anke jekk permess, il-browser juri tieqa bi biża ' twissija lill-utent:

Tnedija ta' SAP GUI minn browser

Sibt is-soluzzjoni #2 fuq l-Internet: toħloq il-protokoll tal-web tiegħek stess. Jippermettilna li nniedu l-applikazzjoni li għandna bżonn billi tuża link li tindika l-protokoll, li aħna stess nirreġistraw fil-Windows fir-reġistru fit-taqsima HKEY_CLASSES_ROOT. Peress li SAP GUI Shortcut għandha s-subsezzjoni tagħha stess f'din it-taqsima, tista 'żżid il-parametru ta' string tal-Protokoll URL b'valur vojt hemmhekk:

Tnedija ta' SAP GUI minn browser

Dan il-protokoll jibda sapgui.exe bil-parametru /SHORTCUT, li huwa eżattament dak li għandna bżonn:

Tnedija ta' SAP GUI minn browser

Ukoll, jew jekk irridu nagħmlu protokoll kompletament arbitrarju (per eżempju, sapshcut), imbagħad tista' tirreġistraha billi tuża l-fajl reg li ġej:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTsapshcut]
@="sapshcut Handler"
"URL Protocol"=""
[HKEY_CLASSES_ROOTsapshcutDefaultIcon]
@="sapshcut.exe"
[HKEY_CLASSES_ROOTsapshcutshell]
[HKEY_CLASSES_ROOTsapshcutshellopen]
[HKEY_CLASSES_ROOTsapshcutshellopencommand]
@="sapshcut.exe "%1""

Issa, jekk nagħmlu link fuq paġna web li tindika l-protokoll Sapgui.Shortcut.File B'mod simili:

<a href='Sapgui.Shortcut.File: -system=SID -client=200'>SID200</a>

Għandna naraw tieqa bħal din:

Tnedija ta' SAP GUI minn browser

U kollox jidher kbir, imma meta tikklikkja fuq il-buttuna "Ħalli" naraw:

Tnedija ta' SAP GUI minn browser

Oops, il-browser biddel l-ispazju f'% 20. Ukoll, karattri oħra se jiġu kkodifikati wkoll fil-kodiċi numeriku tagħhom stess b'simbolu tal-mija. U l-aktar ħaġa spjaċevoli hija li xejn ma jista 'jsir hawn fil-livell tal-browser (kollox hawn isir skond l-istandard) - il-browser ma jħobbx dawn il-karattri, u l-interpretu tal-kmand tal-Windows ma jaħdimx b'tali valuri kodifikati. U nieqes ieħor - is-sekwenza kollha hija mgħoddija bħala parametru, inkluż l-isem tal-protokoll u anke l-kolon (sapgui.shortcut.file:). Barra minn hekk, għalkemm l-istess sapshcut.exe jista’ jarmi dak kollu li mhuwiex parametru għalih (jibda bis-simbolu “-“, imbagħad l-isem, “=" u l-valur), i.e. linja bħal "sapgui.shortcut.file: -system=SID"għad jaħdem, imbagħad mingħajr spazju"sapgui.shortcut.file:-system=SID“m’għadux jaħdem.

Jirriżulta li, fil-prinċipju, hemm żewġ għażliet għall-użu tal-protokoll URI:

  1. Użu mingħajr parametri: Noħolqu mazz sħiħ ta 'protokolli għas-sistemi kollha tagħna tat-tip SIDMANDT, bħal AAA200, BBB200 u l-bqija. Jekk għandek bżonn biss li tibda s-sistema mixtieqa, allura l-għażla hija pjuttost fattibbli, iżda fil-każ tagħna mhix adattata, peress li tal-inqas tixtieq tittrasferixxi l-login tal-utent, iżda dan ma jistax isir b'dan il-mod.
  2. Bl-użu ta 'programm ta' wrapper biex issejjaħ sapshcut.exe jew sapgui.exe. L-essenza ta 'dan il-programm hija sempliċi - trid tieħu l-istring li l-browser jittrasmettilu permezz tal-protokoll tal-web u jibdlu fir-rappreżentazzjoni li jirċievi Windows, i.e. iddawwar il-kodiċijiet tal-karattri kollha lura f'karattri (forsi anke teżamina s-sekwenza skont il-parametri) u diġà ssejjaħ SAP GUI b'kmand korrett garantit. Fil-każ tagħna, lanqas għal kollox huwa adattat (għalhekk lanqas ktibtha), għax mhux biżżejjed li nżidu l-protokoll fuq il-PCs tal-utenti kollha (fi ħdan dominju dan għadu tajjeb, għalkemm huwa aħjar ukoll li tevita din il-prattika), iżda hawn ikollna bżonn aktar poġġi l-programm fuq il-PC, u wkoll niżguraw kontinwament li ma jmurx meta s-softwer jerġa' jiġi installat fuq il-PC.

Dawk. Aħna wkoll inwarrbu din l-għażla bħala mhux xierqa għalina.

F'dan il-punt kont diġà qed nibda naħseb li jkolli ngħid addiju għall-idea li tniedi SAP GUI bil-parametri meħtieġa mill-browser, iżda mbagħad ġietni l-idea li tista 'tagħmel shortcut f'SAP Logon u ikkopjaha fuq id-desktop tiegħek. Jien użajt dan il-metodu darba, iżda qabel ma ħaristx speċifikament lejn il-fajl shortcut. U rriżulta li din is-shortcut hija fajl ta 'test regolari bl-estensjoni .sap. U jekk tħaddem fuq Windows, SAP GUI se tniedi bil-parametri li huma speċifikati f'dan il-fajl. "Bingo!"

Il-format ta 'dan il-fajl huwa bejn wieħed u ieħor dan li ġej (jista' jkun hemm ukoll tranżazzjoni mnedija fl-istartjar, iżda ħallejtha barra):

[System]
Name=SID
Client=200
[User]
Name=
Language=RU
Password=
[Function]
Title=
[Configuration]
GuiSize=Maximized
[Options]
Reuse=0

Jidher li dak kollu li hu meħtieġ: identifikatur tas-sistema, klijent, username u anke password. U anke parametri addizzjonali: Titolu - titolu tat-tieqa, GuiSize — id-daqs tat-tieqa li taħdem (full screen jew le) u Użu mill-ġdid — jekk huwiex meħtieġ li tinfetaħ tieqa ġdida jew li tintuża waħda diġà miftuħa bl-istess sistema. Iżda immedjatament ħarġet sfumatura - irriżulta li l-password f'SAP Logon ma setgħetx tiġi stabbilita, il-linja kienet imblukkata. Irriżulta li dan sar għal raġunijiet ta' sigurtà: jaħżen is-shortcuts kollha maħluqa f'SAP Logon f'fajl sapshortcut.ini (Ħdejn saplogon.ini fil-profil tal-utent tal-Windows) u hemm, għalkemm huma kodifikati, mhumiex ikkodifikati b'mod qawwi wisq u, jekk mixtieq, jistgħu jiġu dekodifikati. Imma tista' ssolvi dan billi tbiddel il-valur ta' parametru wieħed fir-reġistru (il-valur awtomatiku huwa 0):

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity]
"EnablePassword"="1"

Dan jiftaħ il-qasam tal-Password għad-dħul fuq il-formola tal-ħolqien ta' shortcut f'SAP Logon:

Tnedija ta' SAP GUI minn browser

U meta ddaħħal password f'dan il-qasam, din titqiegħed fil-linja korrispondenti
sapshortcut.ini, iżda meta tkaxkar shortcut għad-desktop, ma jidhirx hemm - iżda tista 'żżidha hemmhekk manwalment. Il-password hija encrypted, għal 111111 se tkun kif ġej: PW_49B02219D1F6, għal 222222 - PW_4AB3211AD2F5. Imma aħna aktar interessati fil-fatt li din il-password hija encrypted b'mod wieħed, indipendenti mill-PC speċifiku, u jekk irrisettjaw il-password għal dik inizjali, allura nistgħu nużaw valur wieħed magħruf minn qabel f'dan il-qasam. Ukoll, jekk irridu nużaw password maħluqa bl-addoċċ, ikollna nifhmu l-algoritmu ta 'dan iċ-ċifra. Imma jekk niġġudikaw mill-eżempji mogħtija, dan mhux se jkun diffiċli li jsir. Mill-mod, f'SAP GUI 7.40 dan il-qasam sparixxa kompletament mill-formola, iżda jaċċetta b'mod korrett fajl b'password mimlija.

Jiġifieri, jirriżulta li fil-browser għandek bżonn biss li tikklikkja fuq il-link għal fajl bl-estensjoni .sap u l-format mixtieq - u se toffri li tiftaħha bħala fajl bħal SAP GUI Shortcut (naturalment fuq PC b'SAP GUI installat) u se tiftaħ tieqa SAP GUI bil-parametri speċifikati (jekk is-SID u l-par klijent huma fil-lista SAP Logon fuq dan il-PC).

Iżda, huwa ċar li ħadd ma sempliċement joħloq fajls minn qabel u jaħżenhom fuq is-sit - iridu jiġu ġġenerati abbażi tal-parametri meħtieġa. Pereżempju, tista' toħloq skript PHP biex tiġġenera shortcuts (sapshcut.php):

<?php
$queries = array();
parse_str($_SERVER['QUERY_STRING'], $queries);
$Title = $queries['Title'];
$Size = $queries['Size'];
$SID = $queries['SID'];
$Client = $queries['Client'];
if($Client == '') { $Client=200; };
$Lang = $queries['Language'];
if($Lang=='') { $Lang = 'RU'; };
$User = $queries['Username'];
if($User<>'') { $Password = $queries['Password']; };
$filename = $SID.$Client.'.sap';
header('Content-disposition: attachment; filename='.$filename);
header('Content-type: application/sap');
echo "[System]rn";
echo "Name=".$SID."rn";
echo "Client=".$Client."rn";
echo "[User]rn";
echo "Name=".$Username."rn";
echo "Language=".$Lang."rn";
if($Password<>'') echo "Password=".$Password."rn";
echo "[Function]rn";
if($Title<>'') {echo "Title=".$Title."rn";} else {echo "Title=Вход в системуrn";};
echo "[Configuration]rn";
if($Size=='max') { echo "GuiSize=Maximizedrn"; };
echo "[Options]rn";
echo "Reuse=0rn";
?>

Jekk ma tispeċifikax username u password, ikollok it-tieqa li ġejja li titlob il-login u l-password:

Tnedija ta' SAP GUI minn browser

Jekk tgħaddi biss il-login, il-qasam tal-login jimtela u l-qasam tal-password se jkun vojt. Jekk nagħtu lill-utent kemm login kif ukoll password, iżda l-utent fuq il-PC għandu ċ-ċavetta EnablePassword fir-reġistru fit-taqsima [HKEY_CURRENT_USERSoftwareSAPSAPShortcutSecurity] issettjata għal 0, allura nġibu l-istess ħaġa. U biss jekk din iċ-ċavetta tkun issettjata għal 1 u ngħaddu kemm l-isem kif ukoll il-password inizjali, is-sistema immedjatament tqanqlek biex iddaħħal password permanenti ġdida darbtejn. Dak hu li kellna bżonn niksbu.

Bħala riżultat, għandna s-sett li ġej ta’ għażliet meqjusa bħala illustrazzjoni ta’ dak kollu ta’ hawn fuq:

<html>
<head>
<script>
function openSAPGui(sid, client, user, password) {
var shell = new ActiveXObject("WScript.Shell");
shell.run('sapshcut.exe -system="'+sid+'" -client='+client+' -user="'+user+'" -pw="'+password+'" -language=RU');
}
</script>
</head>
<body>
<a href='' onclick="javascript:openSAPGui('SID', '200', 'test', '');"/>Example 1: Execute sapshcut.exe (ActiveX)<br>
<a href='Sapgui.Shortcut.File: -system=SID -client=200'>Example 2: Open sapshcut.exe (URI)</a><br>
<a href='sapshcut.php?SID=SID&Client=200&User=test'>Example 3: Open file .sap (SAP GUI Shortcut)</a><br>
</body>
</html>

L-aħħar għażla addattat lili. Iżda minflok ma tiġġenera shortcuts SAP, tista 'wkoll tuża, pereżempju, tiġġenera fajls CMD, li, meta jinfetħu minn browser, jiftħu wkoll it-tieqa SAP GUI għalik. Hawn taħt hawn eżempju (sapguicmd.php) tniedi direttament is-SAP GUI bis-sekwenza sħiħa tal-konnessjoni, mingħajr il-ħtieġa li jkollok SAP Logon konfigurat:

<?php
$queries = array();
parse_str($_SERVER['QUERY_STRING'], $queries);
$Title = $queries['Title'];
$ROUTER = $queries['ROUTER'];
$ROUTERPORT = $queries['ROUTERPORT'];
$HOST = $queries['HOST'];
$PORT = $queries['PORT'];
$MESS = $queries['MESS'];
$LG = $queries['LG'];
$filename = 'SAPGUI_';
if($MESS<>'') $filename = $filename.$MESS;
if($HOST<>'') $filename = $filename.$HOST;
if($PORT<>'') $filename = $filename.'_'.$PORT;
$filename = $filename.'.cmd';
header('Content-disposition: attachment; filename='.$filename);
header('Content-type: application/cmd');
echo "@echo offrn";
echo "chcp 1251rn";
echo "echo Вход в ".$Title."rn";
echo "set SAP_CODEPAGE=1504rn";
echo 'if exist "%ProgramFiles(x86)%SAPFrontEndSapGuisapgui.exe" set gui=%ProgramFiles(x86)%SAPFrontEndSapGuisapgui.exe'."rn";
echo 'if exist "%ProgramFiles%SAPFrontEndSapGuisapgui.exe" set gui=%ProgramFiles%SAPFrontEndSapGuisapgui.exe'."rn";
echo "set logon=";
if($ROUTER<>'') echo "/H/".$ROUTER;
if($ROUTERPORT<>'') echo "/S/".$ROUTERPORT;
if($MESS<>'') echo "/M/".$MESS;
if($HOST<>'') echo "/H/".$HOST;
if($PORT<>'') echo "/S/".$PORT;
if($LG<>'') echo "/G/".$LG;
echo "rn";
echo '"%gui%" %logon%'."rn";
?>

Sors: www.habr.com

Żid kumment