Вы можете получить IP-адрес сервера с $_SERVER['SERVER_ADDR']
.
Для MAC-адреса вы можете анализировать вывод netstat -ie
в Linux или ipconfig /all
в Windows.
Вы можете получить IP-адрес клиента с $_SERVER['REMOTE_ADDR']
MAC-адрес клиента не будет доступен вам, за исключением одного особого обстоятельства : , если клиент находится в том же сегменте Ethernet, что и сервер.
Итак, если вы создаете какую-либо систему на базе локальной сети и ваши клиенты , это в том же сегменте Ethernet, тогда вы можете получить MAC-адрес, проанализировав вывод arp -n
(linux) или arp -a
(окна).
Редактирование: вы спрашиваете в комментариях, как получить вывод внешней команды - одним из способов является использование обратных ссылок, например
$ipAddress=$_SERVER['REMOTE_ADDR'];
$macAddr=false;
#run the external command, break output into lines
$arp=`arp -a $ipAddress`;
$lines=explode("\n", $arp);
#look for the output line describing our IP address
foreach($lines as $line)
{
$cols=preg_split('/\s+/', trim($line));
if ($cols[0]==$ipAddress)
{
$macAddr=$cols[1];
}
}
Ну, вам не повезло, если вы не можете заставить клиента добровольно передавать эту информацию и передавать другим способом.
Вики , о которых вы упомянули , также содержат некоторую информацию об этом сценарии с несколькими доменами. По сути, вам нужно захватить предпочтительное имя пользователя и отправить его вместе с запросом на вход. Чтобы получить имя пользователя для всех приложений одновременно, я бы предложил сохранить его в файле cookie всего домена, который известен всем приложениям.
// Store the username after login
document.cookie = "msal_username=Paul@xyz-corp.com;domain=.xyz-corp.com;path=/"
// use the username
var username = getCookieByName("msal_username"); // find some code to do that
userAgentApplication.loginRedirect(scopes, "&login_hint=" + username);
Недостатком этого является то, что вам необходимо реализовать это в во всех ваших приложениях.
Приложения в другом домене
Когда приложения размещены в разных доменах, MSAL.js не может получить доступ к токенам, кэшированным в домене A, в домене B.
Автоматически выбирать учетную запись в Azure AD
...
Использование подсказки для входа в систему
Если у вас нет настроенного утверждения SID или вам необходимо пропустить запрос на выбор учетной записи при интерактивных вызовах аутентификации, вы можете сделать это, указав login_hint и, при необходимости, domain_hint как extraQueryParameters в интерактивных методах MSAL.js (loginPopup, loginRedirect, acquTokenPopup и acquTokenRedirect). Например:
userAgentApplication.loginRedirect(scopes, "&login_hint=<preferred_username>&domain_hint=organizations");
Вы можете получить значения для login_hint и domain_hint, прочитав утверждения, возвращенные в токене ID для пользователя.
Для логина логина должно быть указано утверждение предпочитаемого имени пользователя в маркере идентификатора.
BLOCKQUOTE>