В сервисе 1cfresh.com применяется удобная и надежная система аутентификации пользователей, основанная на технологии OpenID. Благодаря этой технологии, после ввода логина и пароля на любом ресурсе сервиса вы сможете входить без повторного ввода логина и пароля во все компоненты сервиса 1cfresh.com:
- приложения сервиса;
- сайт сервиса;
- форум сервиса;
- личный кабинет (менеджер сервиса);
а также на сайт Информационно-технологического сопровождения («1С:ИТС»).
Это делает работу с сервисом 1cfresh.com более комфортной для пользователей.
Где хранятся данные OpenID-аутентификации пользователя
Если пользователь вошел в сервис 1cfresh.com, то данные об этом запоминаются в виде cookie для того компьютера и того клиентского приложения (браузера или тонкого клиента «1С:Предприятия 8»), с помощью которых пользователь ввел логин и пароль. В cookie содержится срок годности — 24 часа.
Поэтому если пользователь в течение 24 часов с момента ввода логина и пароля войдет на любой ресурс сервиса 1cfresh.com или на сайт 1С:ИТС с того же компьютера, используя то же клиентское приложение (браузер или тонкий клиент), то ему не придется снова вводить логин или пароль.
Как завершить сеанс работы с сервисом и сбросить данные OpenID-аутентификации
Если к вашим приложениям могут иметь доступ другие лица, то желательно позаботиться о том, чтобы они не могли войти с вашего компьютера в сервис 1cfresh.com от вашего имени. Для этого перед завершением работы с сервисом 1cfresh.com необходимо сбросить данные OpenID-аутентификации в сервисе, например:
-
нажать на сайте сервиса гиперссылку
Выйти: - или нажать в любом приложении сервиса кнопку
(Сервис и настройки) в правом верхнем углу окна приложения, и затем выбрать команду меню Файл — Завершить работу пользователя…
-
или нажать в строке заголовка приложения надпись с именем пользователя, а в выведенном окошке нажать гиперссылку Завершить работу:
О других способах сброса данных OpenID-аутентификации в сервисе 1cfresh.com можно прочесть в статье по ссылке.
Если вы не желаете пользоваться OpenID-аутентификацией
С приложениями сервиса можно работать и без использования OpenID-аутентификации:
-
Для вызова приложения сервиса с помощью браузера без использования OpenID-аутентификации можно вызвать приложение по прямой ссылке, добавив после номера приложения (области данных) символы
?oida-Для входа в личный кабинет с помощью браузера без использования OpenID-аутентификации следует использовать адрес
https://1cfresh.com/a/adm/?oida-Для удобства такие ссылки на приложения и личный кабинет сервиса можно добавить в закладки браузера.
- При использовании тонкого клиента можно настроить автоматическое добавление приложений сервиса в список информационных баз тонкого клиента, так чтобы при их вызове не использовалась OpenID-аутентификация. Как это сделать, описано в статье по ссылке.
- При использовании тонкого клиента также можно добавить приложение сервиса в список информационных баз тонкого клиента вручную, как описано в статье по ссылке, указав при добавлении в поле Дополнительные параметры запуска значение
.
/OIDA-
См. также:
_stay true_
14.09.16 — 09:27
Здравствуйте. Есть три базы с идентичнымы списками пользователей(логины, пароли, права)
Юзеры планируют работать в веб морде.
Хотим попробовать настроить так, чтобы авторизовавшись во «входной» базе, в две другие заходили без ввода логина и пароля.
Перерыл кучу статей в сети, включая итс. Опубликовал «входную» базу с галкой «использовать в качестве провайдера OpenID». Две другие опебликовал с галками «Использовать OpenID-аутентификацию и в поле с адресом провайдера указал как в инструкции: http://127.0.0.1/mybase//e1cib/oid2op
вбиваем ссылку в браузер, скачивается файлик с настройками, как в инструкции. Вот его содержимое
<?xml version=»1.0″ encoding=»UTF-8″?>
<xrds:XRDS xmlns:xrds=»xri://$xrds» xmlns=»xri://$xrd*($v*2.0)»>
<XRD>
<Service priority=’0′>
<Type>http://specs.openid.net/auth/2.0/server</Type>;
<URI>http://127.0.0.1/mybase/e1cib/oid2op</URI>;
</Service>
</XRD>
</xrds:XRDS>
Ни в какую не хочет появляться окно OpenID-аутентификации. Только стандартное окно 1С.
платформа 8.3.8.2054 + сервер 1С(x64), веб-сервер Apache 2.4.4(x64)
Кто настраивал подобное — поделитесь мудростью.
_stay true_
1 — 14.09.16 — 09:29
_stay true_
2 — 14.09.16 — 10:11
Ну блин, выручайте((
_stay true_
3 — 14.09.16 — 10:22
Где же все остроумные гении типа «позовите специалиста» или «тебе этого делать не нужно»?)) А то скучно
xafavute
4 — 14.09.16 — 10:24
все сервера на 1 компе?
_stay true_
5 — 14.09.16 — 10:24
(4) Да, я пока локально на своём играюсь с win7 x64
_stay true_
6 — 14.09.16 — 10:25
Все три публикации доступны по 127.0.0.1/mybase или Localhost/mybase
Пробовал ru_RU в конец добавлять — безрезультатно.
_stay true_
7 — 14.09.16 — 10:31
Ещё наблюдал, что базы, в публикации которых указана ссылка на провайдер, при запуске по веб-морде долго «висят», а потом появляется окно 1С-аутентификации. Установка юзеру галки «Аутентификации OpenID» не дала результатов
xafavute
8 — 14.09.16 — 10:36
может это?
Если OpenID-провайдер требует интерактивной аутентификации (происходит первое обращение или истекло время жизни признака аутентифицированности), клиент отображает диалог для ввода имени и пароля пользователя.
Аутентификация происходит по списку пользователей информационной базы OpenID-провайдера.
xafavute
9 — 14.09.16 — 10:36
добавь в базу openid тестового пользователя и проверь
_stay true_
10 — 14.09.16 — 10:38
(9) Пробую
xafavute
11 — 14.09.16 — 10:40
также включи тж по exeption
xafavute
12 — 14.09.16 — 10:40
еще нашел
Возможно, дело в том, что вы пытаетесь работать c OpenID провайдером по протоколу http.
Это следует из того, что в файле oid2op указан адрес OpenID провайдера с протоколом http.
<URI>http://msk-s3-arm065/sm/e1cib/oid2op</URI>;
В то время как в документации по 1С:Предприятию сказано (Руководство администратора, приложение 3, п. 3.16.8.2):
ВНИМАНИЕ! Взаимодействие с OpenID-провайдером осуществляется только по HTTPS-соединению.
xafavute
13 — 14.09.16 — 10:41
_stay true_
14 — 14.09.16 — 10:44
(12) Поднимаем Apache 2.4.4(x64) с SSL. Будем пробовать.
Мыш
15 — 14.09.16 — 11:01
ОпенИД не делал, но доменную авторизацию заборол. Но на ИИС.
_stay true_
16 — 19.09.16 — 10:51
Не получилось.
Настроили SSL как
http://adminsnotes.blogspot.ru/2008/01/apache-openssl-windows.html
В браузере стучится в базу по https://localhost:443/mybase
Ссылка на провайдер стала такой:
https://localhost:443/mybase/e1cib/oid2op
default.vrd базы провайдера Openid
<?xml version=»1.0″ encoding=»UTF-8″?>
<point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system»;
xmlns:xs=»http://www.w3.org/2001/XMLSchema»;
xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»;
base=»/SPPR»
ib=»File="D:KULESHOV_K_OSPPR_FILE";»
enableStandardOData=»true»
temp=»D:wwwtmp»>
<ws publishExtensionsByDefault=»true»>
<point name=»EnterpriseDataExchange_1_0_1_1″
alias=»EnterpriseDataExchange_1_0_1_1.1cws»
enable=»true»/>
<point name=»EnterpriseDataUpload_1_0_1_1″
alias=»EnterpriseDataUpload_1_0_1_1.1cws»
enable=»true»/>
<point name=»ErrorsExchange»
alias=»ErrorsExchange.1cws»
enable=»true»/>
<point name=»Exchange»
alias=»exchange.1cws»
enable=»true»/>
<point name=»Exchange_2_0_1_6″
alias=»exchange_2_0_1_6.1cws»
enable=»true»/>
<point name=»FunctionModel»
alias=»FunctionModel.1cws»
enable=»true»/>
<point name=»InterfaceVersion»
alias=»InterfaceVersion.1cws»
enable=»true»/>
</ws>
<httpServices publishExtensionsByDefault=»true»/>
<openid>
<provider>
<lifetime>604800</lifetime>
</provider>
</openid>
</point>
default.vrd базы со ссылкой на провайдер openid:
<?xml version=»1.0″ encoding=»UTF-8″?>
<point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system»;
xmlns:xs=»http://www.w3.org/2001/XMLSchema»;
xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»;
base=»/DMC_WEB»
ib=»File="D:KULESHOV_K_ODMC_WEB";»
enableStandardOData=»true»>
<httpServices publishByDefault=»false»/>
<ws>
<point name=»AddressSystem»
alias=»AddressSystem.1cws»
enable=»true»/>
<point name=»DMMessageService»
alias=»dmmessage.1cws»
enable=»true»/>
<point name=»DMService»
alias=»dm.1cws»
enable=»true»/>
<point name=»DMX»
alias=»DMX.1cws»
enable=»true»/>
<point name=»EnterpriseDataExchange_1_0_1_1″
alias=»EnterpriseDataExchange_1_0_1_1.1cws»
enable=»true»/>
<point name=»EnterpriseDataUpload_1_0_1_1″
alias=»EnterpriseDataUpload_1_0_1_1.1cws»
enable=»true»/>
<point name=»Exchange»
alias=»exchange.1cws»
enable=»true»/>
<point name=»Exchange_2_0_1_6″
alias=»exchange_2_0_1_6.1cws»
enable=»true»/>
<point name=»Files»
alias=»files.1cws»
enable=»true»/>
<point name=»InterfaceVersion»
alias=»InterfaceVersion.1cws»
enable=»true»/>
<point name=»MEDO»
alias=»medo.1cws»
enable=»true»/>
<point name=»MEDO1C»
alias=»medo1c.1cws»
enable=»true»/>
<point name=»MobileDMVersionService»
alias=»mobileDMVersionService.1cws»
enable=»true»/>
<point name=»MEDO2013″
alias=»medo2013.1cws»
enable=»true»/>
</ws>
<openid>
<rely url=»https://localhost:443/SPPR//e1cib/oid2op»/>;
</openid>
</point>
И содержимое файла oid2op
<?xml version=»1.0″ encoding=»UTF-8″?>
<xrds:XRDS xmlns:xrds=»xri://$xrds» xmlns=»xri://$xrd*($v*2.0)»>
<XRD>
<Service priority=’0′>
<Type>http://specs.openid.net/auth/2.0/server</Type>;;
<URI>https://localhost:443/mybase/e1cib/oid2op</URI>;;
</Service>
</XRD>
</xrds:XRDS>
Всё-равно вылезает стандартное окно 1С-аутентификации.
_stay true_
17 — 19.09.16 — 10:53
xafavute
18 — 19.09.16 — 11:00
(17) Сертификаты для https как настраивал?
xafavute
19 — 19.09.16 — 11:00
сама ссылкка в браузере открывается?
arsik
20 — 19.09.16 — 11:03
А попробуй в настройках не локалхост указать, а нормальный,внешний, айпишник.
_stay true_
21 — 19.09.16 — 11:08
(18) сертификаты как описано в статье в (16)
http://adminsnotes.blogspot.ru/2008/01/apache-openssl-windows.html
В командной строке прописывали нужные команды. Всё как по инструкции
(20) Сейчас попробую.
arsik
22 — 19.09.16 — 11:10
+ (20) Клиент возможно пытается на 127.0.0.1 искать openid сервер.
_stay true_
23 — 19.09.16 — 11:16
(22) я первый раз такое пытаюсь поднять: разве openid-сервером в данном случае не выступает база 1С?
xafavute
24 — 19.09.16 — 11:22
_stay true_
25 — 19.09.16 — 11:27
(24) Да. Скачивается файлик. Как в статье на ITS описано.
<?xml version=»1.0″ encoding=»UTF-8″?>
<xrds:XRDS xmlns:xrds=»xri://$xrds» xmlns=»xri://$xrd*($v*2.0)»>
<XRD>
<Service priority=’0′>
<Type>http://specs.openid.net/auth/2.0/server</Type>;;;
<URI>https://localhost:443/mybase/e1cib/oid2op</URI>;;;
</Service>
</XRD>
</xrds:XRDS>
_stay true_
26 — 19.09.16 — 15:25
Если через тонкий клиент и выставить параметр запуска /OIDA+, то такая ошибка лезет:
«1с ошибка подключения к openid провайдеру https://localhost:443/mybase/e1cib/oid2op»; и предлагает повторить попытку подключения
Через браузер даже окошко OpenID-аутентификации не лезет.
Может, чего с юзерами намудрил? В базе-провайдере: создал админа с полными правами и ролью администратор системы, поставил галку «Аутентификация 1С: предприятия» и галку «Аутентификация OpenID». Во второй базе, где указана ссылка на провайдер OpenID, просто создал юзера с таким же логином и правами, но выставил только галку «Аутентификация OpneID».
_stay true_
27 — 19.09.16 — 15:48
Если просто без ввода пароля нажать вход, то получаем ошибку: «Ошибка OpenID-аутентификации пользователя(Тонкий клиент).
Что за бяка-кака(((
arsik
28 — 19.09.16 — 18:30
Внешний айпишник указывал? У тебя клиент пытается на локалхосте найти опенайди сервер.
xafavute
29 — 19.09.16 — 18:34
(26) Ты уже выяснил чей список показывается: свой или чужой?
xafavute
30 — 19.09.16 — 18:35
И в тж что пишется?
xafavute
31 — 19.09.16 — 18:35
попробуй полный собрать
xafavute
32 — 19.09.16 — 18:36
ну и платформу не ниже 8.3.8.2027
_stay true_
33 — 20.09.16 — 08:36
(28) Внешний айпи не указывал, ибо пока тестирую всё на рабочем компе.
(29) В тонком клиенте в окне OpenID-аутентификации не отображаются пользователи в списке вообще. Приходится руками писать имя и пароль. Если вводишь корректные данные — ругается, что ошибка соедигнения с сервером OpenID, если оставляешь пароль пустым — вылетает ошибка «Ошибка OpenID аутентификации(тонкий клиент)
(32) Платформа 8.3.8.1933+сервер x64
(31) Не совсем понял.
(30) В ТЖ вот что вижу:
Statistics: RecordsScanned = 1, ParseTime = 0, ExecuteTime = 0, BuffersMemory = 32988, ResultRecords = 1, RecordSize = 731′,Rows=1
28:59.980006-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=4184,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_oid2op_auth,Value=’OpenID:20160920042859:9f6a9aee-ba45-4104-919a-5c161bf1edf8:gpJlceZT/y6QRXQEVcRMe7nlPHdTgWus2RJmM9ogOwc=’
28:59.980007-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2027,file=srcVResourceOpenID2Impl.cpp,threadId=4184,func=process_oid2op_request,OP=auth OK
28:59.995001-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1128,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RP=request received
28:59.995002-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1409,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RPCommand=init
28:59.995003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1413,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RP=init command
28:59.995004-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=
28:59.995005-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_oid2rp_sii,Value=966271582496286583:3393608938:1CV8C:
28:59.995006-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2578,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=performDiscovery,RP=open https://localhost:443/SPPR/e1cib/oid2op
29:00.011000-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2584,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=performDiscovery,RP XRDS parsing=downloading and parsing
29:00.026000-0,EXCP,0,process=httpd,Exception=9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3,Descr=»srcLibxml2_Intf.cpp(136):
9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3: Ошибка доступа к файлу ‘https://localhost:443/SPPR/e1cib/oid2op’: srcHTTPImpl.cpp(2559):
896db6ac-cc39-4065-8298-1bf5fccb9d98: Ошибка работы с Интернет: Удаленный узел не прошел проверку»
29:00.026001-0,EXCP,0,process=httpd,Exception=c593fe3b-aeaf-496a-a32e-6b4dc2d13fff,Descr=’srcVResourceOpenID2Impl.cpp(2555):
c593fe3b-aeaf-496a-a32e-6b4dc2d13fff: Ошибка разбора XML: — [1,1]
Фатальная ошибка:
Extra content at the end of the document
SystemId: https://localhost:443/SPPR/e1cib/oid2op’
29:00.026002-0,SYSTEM,0,process=httpd,level=INFO,component=vrsbase,class=OID2Log,line=1437,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RP=OP DISCOVERY ERROR https://localhost:443/SPPR/e1cib/oid2op
29:00.026003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=1
_stay true_
34 — 20.09.16 — 09:19
Обновляю платформу до 8.3.8.2088
_stay true_
35 — 20.09.16 — 14:34
Та же беда. И в cacert.pem отпечаток прописал, и как только уже не изголялся. Не работает.
_stay true_
36 — 28.09.16 — 10:43
попробуем ещё раз:) Апну темку)))
Кирпичами прошу не кидаться:)
Итак, было сделано следующее:
1.Установлены 1С:предприятие 8.3.8.2088+Сервер 1С: предприятия(х64) того же релиза(чтобы получить 64х-компоненты для взаимодействия с Apache 2.4.4(x64))
2. Установлен веб-сервер Apache 2.4.4(x64) с поддержкой OpenSSL/1.0.1e
3. Настроены Apache и SSL согластно инструкции http://catalog.mista.ru/public/146288/
4. в каталоге bin платформы и сервера в файлы cacert.pem добавлены отпечатки, полученные строго по инструкции http://1centerprise8.blogspot.ru/2015/08/post-https-82.html
5. Сертификат был успешно импортированы в винду в доверенные корневые центры сертификации
7. Опубликована база-провайдер с галкой «Использовать в качестве OpenID-провайдера» и временем жизни соединения 432 000 секунд.
7. Ссылка на провадйер openid получилась такой: https://myserver/SPPR/e1cib/oid2op
Как в инструкции на its
8. создан тестовый пользователь в базе провайдере СППР: OpenID, способ аутентификации 1С, пароль и роли установлены;
9. В базе-примемнике создан пользователь с таким же логином и ролями, но способ аутентификации указан OpenID;
10. Источник, примемник, настройки OpenID доступны по ссылкам;
11. Настроен технологический журнал в соответствии с интсрукцией на ИТС(получение событий OpenID)
В итоге:
1. Подключаемся к базе-приемнику по тонкому клиенту: появляется окно OpenID-аутентификации со ссылкой на провайдер, вводим логин, пароль вводим пустой или неправильный: получаем ошибку «Ошибка OpenID-аутентификации пользователя(тонкий клиент). В тех журнале наблюдаем:
38:11.145002-0,SYSTEM,0,process=httpd,level=INFO,component=vrsbase,class=OID2Log,line=1437,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=process_oid2rp_request,RP=OP DISCOVERY ERROR https://kab314-12/SPPR/e1cib/oid2op
38:11.145003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=1
39:27.810001-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1977,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=process_oid2op_request,OP=auth command
39:27.810002-0,SYSTEM,0,process=httpd,level=DEBUG,component=vrsbase,class=OID2Log,line=393,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=read_message,Msg=»can’t set msg param»,Key=auth.pwd,Value=
39:27.810005-1,DBV8DBEng,1,process=httpd,Trans=0,Sql=»SELECT TOP 2147483647 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users
WHERE Name = N’OpenID’ AND ID <> 0x952A5019EAE6A1F74023E7966E3EE1DE
ORDER BY Name»,NParams=0,Rows=1,Func=getExecSQLStatistics
39:27.810006-3,DBV8DBEng,0,process=httpd,Trans=0,Sql=»SELECT TOP 2147483647 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users
WHERE Name = N’OpenID’ AND ID <> 0x952A5019EAE6A1F74023E7966E3EE1DE
ORDER BY Name»,NParams=0,planSQLText=’Fields:(
ID,
Name,
Descr,
OSName,
Changed,
RolesID,
Show,
Data,
EAuth,
AdmRole,
UsSprH
)
V8USERS (v8users) RANGE SCAN USING INDEX (BYNAME) (1 fields)
WHERE
(ID <> 952A5019EAE6A1F74023E7966E3EE1DE)
Statistics: RecordsScanned = 1, ParseTime = 0, ExecuteTime = 0, BuffersMemory = 32982, ResultRecords = 1, RecordSize = 731′,Rows=1
39:27.810009-1,DBV8DBEng,1,process=httpd,Trans=0,Func=selectFileName,FileName=ibparams.inf
39:27.810010-3,DBV8DBEng,0,process=httpd,Trans=0,Func=readFile,CatName=Params,FileName=ibparams.inf
39:27.810011-0,SYSTEM,0,process=httpd,level=DEBUG,component=vrsbase,class=OID2Log,line=966,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=oid2op_check_cred,OP=invalid credentials,Username=OpenID
39:27.810012-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2045,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=process_oid2op_request,OP=auth FAILED
2. Подключаемся к базе-приемнику по тонкому клиенту: появляется окно OpenID-аутентификации со ссылкой на провайдер, вводим КОРРЕКТНЫЕ логин/пароль(как в базе-провайдере), получаем «Ошибка подключения к OpenID-провайдеру https://myserver/SPPR/e1cib/oid2op»;
В тех.журнале видим следующее:
40:46.097000-0,EXCP,0,process=httpd,Exception=9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3,Descr=»srcLibxml2_Intf.cpp(136):
9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3: Ошибка доступа к файлу ‘https://kab314-12/SPPR/e1cib/oid2op’: srcHTTPImpl.cpp(2559):
896db6ac-cc39-4065-8298-1bf5fccb9d98: Ошибка работы с Интернет: Удаленный узел не прошел проверку»
40:46.097001-0,EXCP,0,process=httpd,Exception=c593fe3b-aeaf-496a-a32e-6b4dc2d13fff,Descr=’srcVResourceOpenID2Impl.cpp(2556):
c593fe3b-aeaf-496a-a32e-6b4dc2d13fff: Ошибка разбора XML: — [1,1]
Фатальная ошибка:
Extra content at the end of the document
SystemId: https://kab314-12/SPPR/e1cib/oid2op’
40:46.097002-0,SYSTEM,0,process=httpd,level=INFO,component=vrsbase,class=OID2Log,line=1437,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=process_oid2rp_request,RP=OP DISCOVERY ERROR https://kab314-12/SPPR/e1cib/oid2op
40:46.097003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=1
Сервер и клиент всё поднято на одном компе, в апаче настроен виртуальный хост как по инструкции.
Почему пишет «узел не прошел проверку» и «ошибка работы с интернет» — для меня большая загадка(((
_stay true_
37 — 28.09.16 — 10:47
myserver=kab 314-12
Имеем веб сервер Apache2.4 на Centos 7, работает по https. Сертификат самоподписанный. На нем опубликованы 2-е базы.
Сертификат создавал так:
spoiler
# Генерирую ключ
openssl genrsa -des3 -out ca.key 4096
# На основе ключа создаю сертификат для CA
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
# Генерирую ключ
openssl genrsa -out server.key 4096
# На основе предыдущего ключа создаю файл запроса (csr)
openssl req -new -key server.key -config openssl-csr.cnf -reqexts req_ext -out server.csr
# Создаю сертификат сервера (подписываю .csr своим ca.crt)
openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -set_serial 01 -extfile openssl-csr.cnf -extensions req_ext -in server.csr -out server.crt
Файл default.vrd для базы провайдера:
spoiler
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/openidprov"
ib="Srvr=srv1c;Ref=OpenIDProv;">
<standardOdata enable="false"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<b><openid>
<provider>
<lifetime>86400</lifetime>
</provider>
</openid></b>
</point>
Файл default.vrd для базы клиента OpenID:
spoiler
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/test-openid-client"
ib="Srvr=srv1c;Ref=test-openid-client;">
<standardOdata enable="false"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<openid>
<rely url="https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op" />
</openid>
</point>
В базе провайдерской, завел пользователей с паролями. (Пустая новая база 1С, не нашел что нужна какая-то специальная конфигурация, но вдруг.)
В базе клиентской, завел одноименных пользователей. Отключил аутентификацию 1С, включил OpenID.
При запуске клиентской базы тонким клиентом, меня перекидывает в базу OpenID. Если ввожу не верный пароль, сообщается об этом. Если ввожу верный пароль, получаю ошибку: «Ошибка подключения к OpenID провайдеру https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op».
В технологическом журнале при этом такая ошибка: «Ошибка работы с Интернет: Удаленный узел не прошел проверку».
Сервер 1С и Web сервер, это Linux (CentOS 7). На клиентских машинах Windows, сертификат ca.crt добавлен в хранилище доверенных корневых сертификатов. В браузере базы, и клиентская и провайдерская открываются быз ошибок по https.
Если перейти по адресу https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op скачивается файлик:
spoiler
<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)">
<XRD>
<Service priority='0'>
<Type>http://specs.openid.net/auth/2.0/server</Type>
<URI>https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op</URI>
</Service>
</XRD>
</xrds:XRDS>
Также, если захожу веб браузером в базу клиентску, то меня не перекидывает на провайдерскую, в отличии от тонкого клиента.
Подозреваю что проблема в неправельно сгенерированном сертификате, или неправельной установке его на веб сервере (я про сертификат ca.crt), но на ИТС написано что клиентские сертификаты 1с ищет в хранилище сертификатов, а в CentOS нет единого хранилища.
Кстати, если открывать каким-нибудь консольным браузером с веб сервера его страничку:
https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op то, также открывается тот файлик, который скачивается на десктопных машинах, на сертификат не ругается.
В этой статье будет рассказано о том, как настроить и использовать тонкий клиент на вашем ПК для работы в сервисе.
Пользователи могут работать с приложениями сервиса с помощью веб-браузера или тонкого клиенте. Подробнее о использования веб-браузера читайте в статье.)
Скачивание и установка тонкого клиента.
Перед установкой вам необходимо определить нужную версию тонкого клиента. Для этого вам нужно:
- Запустить приложение в любом браузере
- В правом верхнем углу окна приложения нажать кнопку «Показать информацию о программе».
- В Окне «О программе» будет указано, под какой версией платформы «1С:Предприятие 8» работает приложение. Вам нужен тонкий клиент той же версии.

После скачивания программы установки тонкого клиента перейдем к установке:
1. Запустите скачанный exe-файл тонкого клиента.
2. В окне аутентификации пользователя, введите в него логин и пароль, используемые для доступа к своим приложениям в сервисе, и нажмите кнопку «OK».

3. По завершению установки тонкий клиент будет запущен автоматически.
Добавление приложений сервиса в список баз тонкого клиента.
Если в качестве операционной системы вы используете Windows, то в списке информационных баз автоматически будет создана группа 1cfresh включающая в себя:
- все доступные вам приложения сервиса 1С:Фреш.
- пункт «Личный кабинет» (1cfresh.com)— вход в личный кабинет пользователя в сервисе;
- пункт «Завершить сеансы» (1cfresh.com)— сброс автоматической аутентификации в сервисе.
Если вы используете Linux или Mac OS, то для добавления приложений сервиса в список баз тонкого клиента вам нужно:
- Нажать кнопку Настройка…
- В окне «Настройка диалога запуска» нажать кнопку
в разделе Адреса Интернет-сервисов и списки общих информационных баз.

3. В окне «Редактирование ссылки» введите в поле «Интернет-сервис» адрес http-сервиса:
- если при работе с приложениями сервиса будет использоваться OpenID-аутентификация, нужно указать адрес http-сервиса с использованием OpenID-аутентификации://1cfresh.com/a/wcib/hs/
- если вы не желаете, чтобы при работе в тонком клиенте использовалась OpenID-аутентификация (в целях повышения безопасности), нужно указать адрес http-сервиса без OpenID-аутентификации: //1cfresh.com/a/wcib-noopenid/hs/

4. Нажать кнопку «OK». В окне «Настройка диалога запуска» должна появиться строка с адресом http-сервиса:

5. Нажмите кнопку «ОК».
6.В окне аутентификации указать свой логин и пароль в сервисе и нажать кнопку «OK».
Пользователь может отказаться от автоматического добавления приложений в список информационных баз тонкого клиента. Для этого нужно:
1.Запустить тонкий клиент «1С:Предприятия».
2.Нажать кнопку «Настройка…»
3.В выведенном окне «Настройка диалога запуска» выделить строку с адресом HTTP-сервиса и нажать кнопку .

4.Нажать кнопку «OK».
После этого приложения сервиса можно будет добавить в список информационных баз тонкого клиента вручную.
Запуск приложений сервиса с помощью тонкого клиента.
Для запуска приложения сервиса:
1. Запустите тонкий клиент 1С Предприятия
2. В окне «Запуск 1С:Предприятия» выберите нужное приложение и нажмите кнопку «1С:Предприятие».

Обновление тонкого клиента.
Если версия тонкого клиента на вашем компьютере отличается от версии платформы «1С:Предприятие» в сервисе, то при попытке входа будет выдана ошибка.

В этом случае необходимо скачать и установить дистрибутив нужной версии тонкого клиента как описано в начале данной статьи.
Сотрудники, имеющие персональные учетные записи, могут столкнуться с ошибкой при входе в 1С: «Идентификация пользователя не выполнена». Варианты ее устранения зависят от причин возникновения. Рассмотрим вопросы в нашей статье.
Пользователь ИБ не идентифицирован 1С 8.3 — как исправить
Проблемы с ошибкой «Идентификация пользователя не выполнена» при входе в программу 1С у пользователей возникают, если:
- некорректно указан логин;
- пароль не прошел проверку;
- вход в программу давно не осуществлялся;
- база данных повреждена.
Неверное имя пользователя
В окне настройки учетной записи параметр Имя (для входа) — это логин, который пользователь выбирает в выпадающем списке при входе в систему. Оно может не совпадать с Полным именем и иметь произвольное обозначение. Полное имя выступает в качестве наименования учетной записи, которое программа подставит в поле Ответственный при создании документов, в поле Пользователь в журнале регистрации и т. д.

Все действующие логины перечислены в окне идентификации при входе в 1С. Вводить имя пользователя вручную не рекомендуется, т. к. есть вероятность допустить опечатку. Регистр букв логина программа не учитывает.
Возможно, учетная запись изменена. В окне идентификации в поле Пользователь программа автоматически сохраняет имя последнего, кто совершал вход. Эта запись может быть устаревшей, поэтому выбирайте пользователя из предложенного выпадающего списка.
Если логин отсутствует в перечне, то могут быть следующие варианты вопросов:
- пользователь помечен на удаление;
- выставлен флаг Недействителен — альтернатива удаления, когда пользователь больше не работает в программе, но в базе есть связанная с ним информация;
- отключен параметр Показывать в списке выбора, если аутентификации производится средствами 1С:Предприятия;
- не установлен флаг Вход в программу разрешен.

Неверный пароль
Верхний и нижний регистры букв программа 1С распознает как разные символы. Язык ввода тоже имеет значение. Если пароль задавался на английской раскладке клавиатуры, то при входе следует проверить текущий язык операционной системы.
Например, FghtH и Fghth — это разные пароли. Поэтому при входе требуется внимательность в вопросе пароля и точный ввод всех символов. Если ошибка «Идентификация пользователя не выполнена» повторяется, проверьте, что на клавиатуре не включен индикатор клавиши Caps Lock, он имеет значение только для букв, на числа и символы не влияет.
Когда пользователь забыл пароль, сделать новый может администратор 1С в настройках учетной записи пользователя по кнопке Установить пароль.

При аутентификации средствами операционной системы решить вопрос замены пароля пользователю может только администратор компьютеров.
Длительный перерыв
Если работа 1С организована в клиент-серверном варианте, то при большом перерыве между текущей и предыдущей авторизациями (например, после отпуска) пользователь может столкнуться с вопросом и ошибкой «Идентификация пользователя не выполнена» из-за устаревшего кэша программы 1С. Очистка временных файлов кэша такая же, как при появлении сообщения «Поле объекта не обнаружено». А также рекомендуется перезагрузить сервер.
Файл базы данных поврежден
Некорректное завершение работы программы, компьютера, перебои с электроэнергией могут привести к повреждению файлов, хранящихся на жестких дисках, в т. ч. файла базы данных 1С. Если в «сломанной» части базы оказалась информация о пользователях, то программа 1С при проведении идентификации не сможет ее прочитать и выдаст ошибку «Идентификация пользователя не выполнена». Проблема может коснуться только части сотрудников, у остальных сбоев в работе 1С не будет.
Для решения проблемы:
- сделайте резервную копию базы;
- в конфигураторе перейдите в меню Администрирование — Тестирование и исправление;
- окно с предупреждением проигнорируйте, нажав Продолжить;

- в окне Тестирование и исправление информационной базы отметьте режимы:
- Проверка логической целостности информационной базы — анализ структуры и целостности данных, поиск ошибок в базе сайта;
- Проверка ссылочной целостности информационной базы — проверка объектов на наличие несуществующих ссылок на сайте;
- Реструктуризация таблиц информационной базы — перезапись основных таблиц базы, процесс занимает длительное время;
- поставьте флаг у пункта Тестирование и исправление, чтобы при проверке программа исправила выявленные ошибки;
- при наличии ссылок на несуществующие объекты оставьте Не изменять — в случае обнаружения ссылок на несуществующие объекты никаких исправлений в базе произведено не будет, но они отразятся в результате проверки;
- при частичной потере данных объектов выберите Создать объекты — при отсутствии необходимых объектов программа создаст временные, которые можно будет заполнить данными после входа в 1С;
- запустите тестирование и исправление базы, нажав Выполнить.

Когда ошибка «Идентификация пользователя не выполнена» возникает при открытии конфигуратора, исправление ошибок в базе проводится через утилиту 1С chdbfl.exe. Она устанавливается вместе с платформой 1С, расположена в папке bin рабочего каталога программы.

Перед началом проверки скопируйте файл 1Сv8.1CD из каталога БД в любое другое место, чтобы сохранить первоначальный вариант базы.
Запустите утилиту chdbfl.exe из папки bin. В поле Имя файла БД укажите путь до файла поврежденной базы 1Сv8.1CD, он прописан в нижней части окна запуска 1С.


Отметьте флаг Исправлять обнаруженные ошибки и нажмите Выполнить. По окончании процедуры все выявленные и исправленные ошибки отразятся в окне утилиты.
На практике для «лечения» баз применяют оба способа вместе: сначала проверяют физическую целостность, затем ошибки исправляют через конфигуратор. Если исправить ошибку не удалось, и в программе 1С настроено автоматическое резервное копирование, то можно восстановить последнюю копию базы. Но хотим предупредить, что часть последних введенных данных будет потеряна.
Процесс идентификации
В программу 1С:Предприятие встроен механизм, выполняющий идентификацию пользователей при входе. Идентификация — это процедура «распознавания» персоны, пытающейся получить доступ к информационной базе, с помощью проверки соответствия данных, вводимых при входе, с параметрами, сохраненными в системе. В качестве параметров выступают логин и пароль.
Логин — имя, присвоенное пользователю в 1С, пароль — любая произвольная комбинация символов. Разграничивать полномочия сотрудников в программе с помощью учетных записей — распространенная практика, позволяющая:
- предотвратить открытие и использование информационной базы сторонними лицами;
- настроить интерфейс под каждого пользователя;
- установить ограничения на действия, например, изменение проведенных документов;
- вести журнал операций, совершаемых пользователем в программе.
Аутентификация пользователей в 1С
Аутентификации в 1С — это процедура сравнения логина и пароля, введенных пользователем, с теми, что хранятся в базе. В процессе аутентификации программа опознает пользователя либо выдает сообщение «Идентификация пользователя не выполнена».
Для создания новых пользователей и настройки их параметров необходимы права администратора, путь в типовой конфигурации 1С:Бухгалтерия 8.3: Администрирование — Настройки пользователей и прав — Пользователи.

Чтобы программа 1С при входе в систему проводила проверку пользователей, в индивидуальных настройках на вкладке Главное выберите вариант аутентификации:
- Аутентификация 1С:Предприятия — программа 1С выполняет идентификацию пользователей самостоятельно, имеет параметры:

- Потребовать установку пароля при входе — при следующем запуске программа выдаст пользователю окно для смены пароля, а после задания нового пароля флаг в этом поле автоматически снимется.
Проигнорировать окно смены пароля нельзя, иначе произойдет завершение работы программы. По кнопке Установить пароль администратор может самостоятельно назначить пользователю постоянный или временный пароль. Информационное поле рядом с кнопкой показывает наличие пароля (Пароль установлен) или его отсутствие (Пароль пустой). - Пользователю запрещено изменять пароль — запрет на смену пароля пользователем самостоятельно. Если флаг отсутствует, поменять пароль можно в разделе Главное в персональных настройках учетной записи.
- Показывать в списке выбора — устанавливается для всех работающих в программе пользователей. Если учетная запись используется только для идентификации, например, документов при их загрузке из другой базы, то отображать ее в списке выбора пользователей не требуется, флаг не ставят.
- Аутентификация по протоколу OpenID — протокол OpenID позволяет использовать одну учетную запись для входа на разные системы, ресурсы и т. д.
- Аутентификация операционной системы — идентификация в фоновом режиме без отображения окна с логином и паролем. При запуске 1С запрашивает у операционной системы имя текущего пользователя ОС и сопоставляет его с указанным в поле Пользователь. При их «одинаковости» вход в программу выполняется. В противном случае проводится аутентификации 1С:Предприятием, но если она не отмечена в настройках пользователя, его логина не будет в списке выбора и открыть программу не получится.

Заказать консультацию
По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.
В новой версии 8.3.22 платформы «1С:Предприятие» получат развитие добавленные недавно программные механизмы проверки личности пользователя на основе открытого стандарта OpenID Connect, а также появится функционал, способный сгенерировать для пользователя новый пароль.
Проводить аутентификацию по стандарту OpenID Connect стало проще
При помощи OpenID Connect в 1С можно будет аутентифицировать пользователя на основе проверки, которая уже произошла перед этим, например, на сайте Госуслуг или в Google.
Поскольку проверка подлинности пользователя с использованием данного механизма осуществляется в несколько этапов, в случае если возникает ошибка, установить ее причину зачастую было не просто. Теперь для упрощения определения источника ошибки будут добавлены подробные описания, записываемые в технологический журнал 1С, по основным видам ошибок.
При проведении аутентификации через JWT-токены доступа станет возможным гибко настраивать соответствие одного и того же пользователя различным Ключам сопоставления для соответствующих коммуникационных каналов.
Например, пользователь может пройти аутентификацию в Gmail по почте, в Госуслугах с использованием СНИЛС, а у своего интернет-провайдера по номеру телефона. Для таких случаев, у объекта встроенного языка 1С ПользовательИнформационнойБазы появится свойство КлючиСопоставленияПользователя, как раз для его сопоставления с полями (свойствами) JWT-токена:
Бесплатная
консультация
эксперта
Олег Виноградский
Разработчик
Спасибо за Ваше обращение!
Специалист 1С свяжется с вами в течение 15 минут.
Пароли могут быть сгенерированы автоматически
В числе прочих улучшений в Конфигураторе в параметрах пользователя для настройки аутентификации в «1С:Предприятии» будет доступна гиперссылка «Сгенерировать пароль». Пароль, сгенерированный при помощи этой гиперссылки, будет легко запомнить, но не легко угадать или подобрать т.к. в нем будут чередоваться гласные и согласные буквы, а цифры располагаться или в конце, или в начале.
Также, в случае если пользователь забыл свой пароль и решил его восстановить, он сможет сгенерировать новый:
Сотрудники, имеющие персональные учетные записи, могут столкнуться с ошибкой при входе в 1С: «Идентификация пользователя не выполнена». Варианты ее устранения зависят от причин возникновения. Рассмотрим их в статье.
Содержание
- Пользователь ИБ не идентифицирован 1С 8.3 — как исправить
- Неверное имя пользователя
- Неверный пароль
- Длительный перерыв
- Файл базы данных поврежден
- Процесс идентификации
- Аутентификация пользователей в 1С
Проблемы с ошибкой «Идентификация пользователя не выполнена» при входе в программу 1С у пользователей возникают, если:
- некорректно указан логин;
- пароль не прошел проверку;
- вход в программу давно не осуществлялся;
- база данных повреждена.
Неверное имя пользователя
В окне настройки учетной записи параметр Имя (для входа) — это логин, который пользователь выбирает в выпадающем списке при входе в систему. Оно может не совпадать с Полным именем и иметь произвольное обозначение. Полное имя выступает в качестве наименования учетной записи, которое программа подставит в поле Ответственный при создании документов, в поле Пользователь в журнале регистрации и т. д.
Все действующие логины перечислены в окне идентификации при входе в 1С. Вводить имя пользователя вручную не рекомендуется, т. к. есть вероятность допустить опечатку. Регистр букв логина программа не учитывает.
Возможно, учетная запись изменена. В окне идентификации в поле Пользователь программа автоматически сохраняет имя последнего, кто совершал вход. Эта запись может быть устаревшей, поэтому выбирайте пользователя из предложенного выпадающего списка.
Если логин отсутствует в перечне, то могут быть следующие варианты:
- пользователь помечен на удаление;
- выставлен флаг Недействителен — альтернатива удаления, когда пользователь больше не работает в программе, но в базе есть связанная с ним информация;
- отключен параметр Показывать в списке выбора, если аутентификации производится средствами 1С:Предприятия;
- не установлен флаг Вход в программу разрешен.
Неверный пароль
Верхний и нижний регистры букв программа 1С распознает как разные символы. Язык ввода тоже имеет значение. Если пароль задавался на английской раскладке клавиатуры, то при входе следует проверить текущий язык операционной системы.
Например, FghtH и Fghth — это разные пароли. Поэтому при входе требуется внимательность и точный ввод всех символов. Если ошибка «Идентификация пользователя не выполнена» повторяется, проверьте, что на клавиатуре не включен индикатор клавиши Caps Lock, он имеет значение только для букв, на числа и символы не влияет.
Когда пользователь забыл пароль, сделать новый может администратор 1С в настройках учетной записи пользователя по кнопке Установить пароль.
При аутентификации средствами операционной системы заменить пароль пользователю может только администратор компьютеров.
Длительный перерыв
Если работа 1С организована в клиент-серверном варианте, то при большом перерыве между текущей и предыдущей авторизациями (например, после отпуска) пользователь может столкнуться с ошибкой «Идентификация пользователя не выполнена» из-за устаревшего кэша программы 1С. Очистка временных файлов кэша такая же, как при появлении сообщения «Поле объекта не обнаружено». А также рекомендуется перезагрузить сервер.
Файл базы данных поврежден
Некорректное завершение работы программы, компьютера, перебои с электроэнергией могут привести к повреждению файлов, хранящихся на жестких дисках, в т. ч. файла базы данных 1С. Если в «сломанной» части базы оказалась информация о пользователях, то программа 1С при проведении идентификации не сможет ее прочитать и выдаст ошибку «Идентификация пользователя не выполнена». Проблема может коснуться только части сотрудников, у остальных сбоев в работе 1С не будет.
Подробнее Ошибка СУБД: файл базы данных поврежден в 1С 8.3
Для решения проблемы:
- сделайте резервную копию базы;
- в конфигураторе перейдите в меню Администрирование — Тестирование и исправление;
- окно с предупреждением проигнорируйте, нажав Продолжить;
- в окне Тестирование и исправление информационной базы отметьте режимы:
- Проверка логической целостности информационной базы — анализ структуры и целостности данных, поиск ошибок в базе;
- Проверка ссылочной целостности информационной базы — проверка объектов на наличие несуществующих ссылок;
- Реструктуризация таблиц информационной базы — перезапись основных таблиц базы, процесс занимает длительное время;
- поставьте флаг у пункта Тестирование и исправление, чтобы при проверке программа исправила выявленные ошибки;
- при наличии ссылок на несуществующие объекты оставьте Не изменять — в случае обнаружения ссылок на несуществующие объекты никаких исправлений в базе произведено не будет, но они отразятся в результате проверки;
- при частичной потере данных объектов выберите Создать объекты — при отсутствии необходимых объектов программа создаст временные, которые можно будет заполнить данными после входа в 1С;
- запустите тестирование и исправление базы, нажав Выполнить.
Когда ошибка «Идентификация пользователя не выполнена» возникает при открытии конфигуратора, исправление ошибок в базе проводится через утилиту 1С chdbfl.exe. Она устанавливается вместе с платформой 1С, расположена в папке bin рабочего каталога программы.
Перед началом проверки скопируйте файл 1Сv8.1CD из каталога БД в любое другое место, чтобы сохранить первоначальный вариант базы.
Запустите утилиту chdbfl.exe из папки bin. В поле Имя файла БД укажите путь до файла поврежденной базы 1Сv8.1CD, он прописан в нижней части окна запуска 1С.
Отметьте флаг Исправлять обнаруженные ошибки и нажмите Выполнить. По окончании процедуры все выявленные и исправленные ошибки отразятся в окне утилиты.
На практике для «лечения» баз применяют оба способа вместе: сначала проверяют физическую целостность, затем ошибки исправляют через конфигуратор. Если исправить ошибку не удалось, и в программе 1С настроено автоматическое резервное копирование, то можно восстановить последнюю копию базы. Но хотим предупредить, что часть последних введенных данных будет потеряна.
Процесс идентификации
В программу 1С:Предприятие встроен механизм, выполняющий идентификацию пользователей при входе. Идентификация — это процедура «распознавания» персоны, пытающейся получить доступ к информационной базе, с помощью проверки соответствия данных, вводимых при входе, с параметрами, сохраненными в системе. В качестве параметров выступают логин и пароль.
Логин — имя, присвоенное пользователю в 1С, пароль — любая произвольная комбинация символов. Разграничивать полномочия сотрудников в программе с помощью учетных записей — распространенная практика, позволяющая:
- предотвратить открытие и использование информационной базы сторонними лицами;
- настроить интерфейс под каждого пользователя;
- установить ограничения на действия, например, изменение проведенных документов;
- вести журнал операций, совершаемых пользователем в программе.
Аутентификация пользователей в 1С
Аутентификации в 1С — это процедура сравнения логина и пароля, введенных пользователем, с теми, что хранятся в базе. В процессе аутентификации программа опознает пользователя либо выдает сообщение «Идентификация пользователя не выполнена».
Для создания новых пользователей и настройки их параметров необходимы права администратора, путь в типовой конфигурации 1С:Бухгалтерия 8.3: Администрирование — Настройки пользователей и прав — Пользователи.
Чтобы программа 1С при входе в систему проводила проверку пользователей, в индивидуальных настройках на вкладке Главное выберите вариант аутентификации:
- Аутентификация 1С:Предприятия — программа 1С выполняет идентификацию пользователей самостоятельно, имеет параметры:
- Потребовать установку пароля при входе — при следующем запуске программа выдаст пользователю окно для смены пароля, а после задания нового пароля флаг в этом поле автоматически снимется.
Проигнорировать окно смены пароля нельзя, иначе произойдет завершение работы программы. По кнопке Установить пароль администратор может самостоятельно назначить пользователю постоянный или временный пароль. Информационное поле рядом с кнопкой показывает наличие пароля (Пароль установлен) или его отсутствие (Пароль пустой). - Пользователю запрещено изменять пароль — запрет на смену пароля пользователем самостоятельно. Если флаг отсутствует, поменять пароль можно в разделе Главное в персональных настройках учетной записи.
- Показывать в списке выбора — устанавливается для всех работающих в программе пользователей. Если учетная запись используется только для идентификации, например, документов при их загрузке из другой базы, то отображать ее в списке выбора пользователей не требуется, флаг не ставят.
- Потребовать установку пароля при входе — при следующем запуске программа выдаст пользователю окно для смены пароля, а после задания нового пароля флаг в этом поле автоматически снимется.
- Аутентификация по протоколу OpenID — протокол OpenID позволяет использовать одну учетную запись для входа на разные системы, ресурсы и т. д.
- Аутентификация операционной системы — идентификация в фоновом режиме без отображения окна с логином и паролем. При запуске 1С запрашивает у операционной системы имя текущего пользователя ОС и сопоставляет его с указанным в поле Пользователь. При их «одинаковости» вход в программу выполняется. В противном случае проводится аутентификации 1С:Предприятием, но если она не отмечена в настройках пользователя, его логина не будет в списке выбора и открыть программу не получится.
См. также:
- Утилита chdbfl.exe для 8.3
- Тестирование и исправление базы 1С
- Несоответствие типов
- Итератор для значения не определен
- Неоднозначное поле в запросе
- Исправление технических ошибок при работе с 1С:Бухгалтерия
Если Вы еще не подписаны:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы по 1С:Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.
Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
I’m using Django-Allauth in my Django project. I added some Social Providers (Facebook, Google) and it works perfectly!
But I’m facing a problem when trying to use OpenID providers.
I’ve been testing it with Yahoo and AOL so far, and both end up with the same error: openid.consumer.consumer.ProtocolError: Parameter next not in return_to URL.
Configuration
settings.py
Some relevant info of my project’s setting.py file:
INSTALLED_APPS = [
# Django apps
'django.contrib.auth',
'django.contrib.sites',
# Allauth apps
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.socialaccount.providers.openid',
'allauth.socialaccount.providers.facebook',
'allauth.socialaccount.providers.google',
# Project apps
'frontoffice.apps.FrontofficeConfig',
'middleoffice.apps.MiddleofficeConfig',
]
SITE_ID = 1
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
# Email sending
EMAIL_HOST = 'smtp.sendgrid.net'
EMAIL_HOST_USER = 'apikey'
EMAIL_HOST_PASSWORD = 'secret'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
# Auth and allauth settings
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_USERNAME_MIN_LENGTH = 3
# Redirections
ACCOUNT_LOGOUT_REDIRECT_URL = '/front-office'
LOGIN_REDIRECT_URL = '/front-office'
# Email verification
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
SOCIALACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 3 # in days
ACCOUNT_EMAIL_CONFIRMATION_COOLDOWN = 30 # in seconds
# Account signup
ACCOUNT_SIGNUP_EMAIL_ENTER_TWICE = True
ACCOUNT_SIGNUP_FORM_CLASS = 'frontoffice.forms.UserAccountForm'
# Social Accounts
SOCIALACCOUNT_AUTO_SIGNUP = False
SOCIALACCOUNT_EMAIL_REQUIRED = True
SOCIALACCOUNT_QUERY_EMAIL = True
SOCIALACCOUNT_PROVIDERS = {
'openid': {
'SERVERS': [
dict(id='yahoo',
name='Yahoo OpenID',
openid_url='http://me.yahoo.com'),
]
},
'facebook': {
'SCOPE': ['email', ],
'METHOD': 'js_sdk',
'INIT_PARAMS': {'cookie': True},
'FIELDS': ['id', 'email', 'name', 'first_name', 'last_name', 'verified', 'locale', 'timezone', 'link', 'gender', 'updated_time',],
'VERIFIED_EMAIL': False,
},
'google': {
'SCOPE': [
'profile',
'email',
],
'AUTH_PARAMS': {
'access_type': 'online',
}
}
}
I’m aware some settings don’t override defaults or are redundant, it just helps me remembering what behaviours I should expect.
Using OpenID Auth
Error stacktrace
As I said, I tried Yahoo OpenID (http://me.yahoo.com), both from pre-defined provider and OpenID URL, and AOL, from URL (http://openid.aol.com/myUserName).
Both return the aforementionned error, here’s an example stacktrace :
INFO:django.server:"GET /accounts/openid/login/?openid=http%3A%2F%2Fme.yahoo.com&process=login HTTP/1.1" 302 0
ERROR:root:Verifying return_to arguments: Parameter next not in return_to URL
Traceback (most recent call last):
File "d:ProfilesuserEnvsDjangolibsite-packagesopenidconsumerconsumer.py", line 673, in _checkReturnTo
self._verifyReturnToArgs(message.toPostArgs())
File "d:ProfilesuserEnvsDjangolibsite-packagesopenidconsumerconsumer.py", line 886, in _verifyReturnToArgs
(pair[0], ))
openid.consumer.consumer.ProtocolError: Parameter next not in return_to URL
INFO:django.server:
"GET /accounts/openid/callback/?janrain_nonce=2017-11-21T15:56:32_nonce_zu
&next=
&openid.ns=http://specs.openid.net/auth/2.0
&openid.mode=id_res
&openid.return_to=http://localhost:8000/accounts/openid/callback/?janrain_nonce=2017-11-21T15:56:32_nonce_zu
&next=
&openid.claimed_id=https://me.yahoo.com/a/C7dd_secret_bVtec-#784b5
&openid.identity=https://me.yahoo.com/a/C7dd_secret_bVtec-
&openid.assoc_handle=1P.qFXi_secret_7MP8.Cv06_secret_wEeA--
&openid.realm=http://localhost:8000/
&openid.ns.ax=http://openid.net/srv/ax/1.0
&openid.ax.mode=fetch_response
&openid.ax.value.email=jane.doe@yahoo.fr
&openid.ax.value.fullname=Jane Doe
&openid.response_nonce=2017-11-21T15:56:33Zd_nonce_eA--
&openid.signed=assoc_handle,claimed_id,identity,mode,ns,op_endpoint,response_nonce,return_to,signed,ax.value.email,ax.type.email,ax.value.fullname,ax.type.fullname,ns.ax,ax.mode,pape.auth_level.nist
&openid.op_endpoint=https://open.login.yahooapis.com/openid/op/auth
&openid.ax.type.email=http://axschema.org/contact/email
&openid.ax.type.fullname=http://axschema.org/namePerson
&openid.pape.auth_level.nist=0
&openid.sig=n/JOWn_secret_3630=
HTTP/1.1"
200 647
I put line feeds between parameters for readability.
Question
As you can see, the error message is quite self-explanatory: parameter &next= is empty.
Would anyone happen to know where things might have gone wrong? Is it provider-related, libray-related, configuration/implementation-related?
Thanks in advance!
Имеем веб сервер Apache2.4 на Centos 7, работает по https. Сертификат самоподписанный. На нем опубликованы 2-е базы.
Сертификат создавал так:
spoiler
# Генерирую ключ
openssl genrsa -des3 -out ca.key 4096
# На основе ключа создаю сертификат для CA
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
# Генерирую ключ
openssl genrsa -out server.key 4096
# На основе предыдущего ключа создаю файл запроса (csr)
openssl req -new -key server.key -config openssl-csr.cnf -reqexts req_ext -out server.csr
# Создаю сертификат сервера (подписываю .csr своим ca.crt)
openssl x509 -req -days 365 -CA ca.crt -CAkey ca.key -set_serial 01 -extfile openssl-csr.cnf -extensions req_ext -in server.csr -out server.crt
Файл default.vrd для базы провайдера:
spoiler
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/openidprov"
ib="Srvr=srv1c;Ref=OpenIDProv;">
<standardOdata enable="false"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<b><openid>
<provider>
<lifetime>86400</lifetime>
</provider>
</openid></b>
</point>
Файл default.vrd для базы клиента OpenID:
spoiler
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/test-openid-client"
ib="Srvr=srv1c;Ref=test-openid-client;">
<standardOdata enable="false"
reuseSessions="autouse"
sessionMaxAge="20"
poolSize="10"
poolTimeout="5"/>
<openid>
<rely url="https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op" />
</openid>
</point>
В базе провайдерской, завел пользователей с паролями. (Пустая новая база 1С, не нашел что нужна какая-то специальная конфигурация, но вдруг.)
В базе клиентской, завел одноименных пользователей. Отключил аутентификацию 1С, включил OpenID.
При запуске клиентской базы тонким клиентом, меня перекидывает в базу OpenID. Если ввожу не верный пароль, сообщается об этом. Если ввожу верный пароль, получаю ошибку: «Ошибка подключения к OpenID провайдеру https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op».
В технологическом журнале при этом такая ошибка: «Ошибка работы с Интернет: Удаленный узел не прошел проверку».
Сервер 1С и Web сервер, это Linux (CentOS 7). На клиентских машинах Windows, сертификат ca.crt добавлен в хранилище доверенных корневых сертификатов. В браузере базы, и клиентская и провайдерская открываются быз ошибок по https.
Если перейти по адресу https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op скачивается файлик:
spoiler
<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)">
<XRD>
<Service priority='0'>
<Type>http://specs.openid.net/auth/2.0/server</Type>
<URI>https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op</URI>
</Service>
</XRD>
</xrds:XRDS>
Также, если захожу веб браузером в базу клиентску, то меня не перекидывает на провайдерскую, в отличии от тонкого клиента.
Подозреваю что проблема в неправельно сгенерированном сертификате, или неправельной установке его на веб сервере (я про сертификат ca.crt), но на ИТС написано что клиентские сертификаты 1с ищет в хранилище сертификатов, а в CentOS нет единого хранилища.
Кстати, если открывать каким-нибудь консольным браузером с веб сервера его страничку:
https://srv1c-cl-testssl2-web/openidprov/e1cib/oid2op то, также открывается тот файлик, который скачивается на десктопных машинах, на сертификат не ругается.
14.09.16 — 09:27
Здравствуйте. Есть три базы с идентичнымы списками пользователей(логины, пароли, права)
Юзеры планируют работать в веб морде.
Хотим попробовать настроить так, чтобы авторизовавшись во «входной» базе, в две другие заходили без ввода логина и пароля.
Перерыл кучу статей в сети, включая итс. Опубликовал «входную» базу с галкой «использовать в качестве провайдера OpenID». Две другие опебликовал с галками «Использовать OpenID-аутентификацию и в поле с адресом провайдера указал как в инструкции: http://127.0.0.1/mybase//e1cib/oid2op
вбиваем ссылку в браузер, скачивается файлик с настройками, как в инструкции. Вот его содержимое
<?xml version=»1.0″ encoding=»UTF-8″?>
<xrds:XRDS xmlns:xrds=»xri://$xrds» xmlns=»xri://$xrd*($v*2.0)»>
<XRD>
<Service priority=’0′>
<Type>http://specs.openid.net/auth/2.0/server</Type>;
<URI>http://127.0.0.1/mybase/e1cib/oid2op</URI>;
</Service>
</XRD>
</xrds:XRDS>
Ни в какую не хочет появляться окно OpenID-аутентификации. Только стандартное окно 1С.
платформа 8.3.8.2054 + сервер 1С(x64), веб-сервер Apache 2.4.4(x64)
Кто настраивал подобное — поделитесь мудростью.
1 — 14.09.16 — 09:29
2 — 14.09.16 — 10:11
Ну блин, выручайте((
3 — 14.09.16 — 10:22
Где же все остроумные гении типа «позовите специалиста» или «тебе этого делать не нужно»?)) А то скучно
4 — 14.09.16 — 10:24
все сервера на 1 компе?
5 — 14.09.16 — 10:24
(4) Да, я пока локально на своём играюсь с win7 x64
6 — 14.09.16 — 10:25
Все три публикации доступны по 127.0.0.1/mybase или Localhost/mybase
Пробовал ru_RU в конец добавлять — безрезультатно.
7 — 14.09.16 — 10:31
Ещё наблюдал, что базы, в публикации которых указана ссылка на провайдер, при запуске по веб-морде долго «висят», а потом появляется окно 1С-аутентификации. Установка юзеру галки «Аутентификации OpenID» не дала результатов
8 — 14.09.16 — 10:36
может это?
Если OpenID-провайдер требует интерактивной аутентификации (происходит первое обращение или истекло время жизни признака аутентифицированности), клиент отображает диалог для ввода имени и пароля пользователя.
Аутентификация происходит по списку пользователей информационной базы OpenID-провайдера.
9 — 14.09.16 — 10:36
добавь в базу openid тестового пользователя и проверь
10 — 14.09.16 — 10:38
(9) Пробую
11 — 14.09.16 — 10:40
также включи тж по exeption
12 — 14.09.16 — 10:40
еще нашел
Возможно, дело в том, что вы пытаетесь работать c OpenID провайдером по протоколу http.
Это следует из того, что в файле oid2op указан адрес OpenID провайдера с протоколом http.
<URI>http://msk-s3-arm065/sm/e1cib/oid2op</URI>;
В то время как в документации по 1С:Предприятию сказано (Руководство администратора, приложение 3, п. 3.16.8.2):
ВНИМАНИЕ! Взаимодействие с OpenID-провайдером осуществляется только по HTTPS-соединению.
13 — 14.09.16 — 10:41
14 — 14.09.16 — 10:44
(12) Поднимаем Apache 2.4.4(x64) с SSL. Будем пробовать.
15 — 14.09.16 — 11:01
ОпенИД не делал, но доменную авторизацию заборол. Но на ИИС.
16 — 19.09.16 — 10:51
Не получилось.
Настроили SSL как
http://adminsnotes.blogspot.ru/2008/01/apache-openssl-windows.html
В браузере стучится в базу по https://localhost:443/mybase
Ссылка на провайдер стала такой:
https://localhost:443/mybase/e1cib/oid2op
default.vrd базы провайдера Openid
<?xml version=»1.0″ encoding=»UTF-8″?>
<point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system»;
xmlns:xs=»http://www.w3.org/2001/XMLSchema»;
xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»;
base=»/SPPR»
ib=»File="D:KULESHOV_K_OSPPR_FILE";»
enableStandardOData=»true»
temp=»D:wwwtmp»>
<ws publishExtensionsByDefault=»true»>
<point name=»EnterpriseDataExchange_1_0_1_1″
alias=»EnterpriseDataExchange_1_0_1_1.1cws»
enable=»true»/>
<point name=»EnterpriseDataUpload_1_0_1_1″
alias=»EnterpriseDataUpload_1_0_1_1.1cws»
enable=»true»/>
<point name=»ErrorsExchange»
alias=»ErrorsExchange.1cws»
enable=»true»/>
<point name=»Exchange»
alias=»exchange.1cws»
enable=»true»/>
<point name=»Exchange_2_0_1_6″
alias=»exchange_2_0_1_6.1cws»
enable=»true»/>
<point name=»FunctionModel»
alias=»FunctionModel.1cws»
enable=»true»/>
<point name=»InterfaceVersion»
alias=»InterfaceVersion.1cws»
enable=»true»/>
</ws>
<httpServices publishExtensionsByDefault=»true»/>
<openid>
<provider>
<lifetime>604800</lifetime>
</provider>
</openid>
</point>
default.vrd базы со ссылкой на провайдер openid:
<?xml version=»1.0″ encoding=»UTF-8″?>
<point xmlns=»http://v8.1c.ru/8.2/virtual-resource-system»;
xmlns:xs=»http://www.w3.org/2001/XMLSchema»;
xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance»;
base=»/DMC_WEB»
ib=»File="D:KULESHOV_K_ODMC_WEB";»
enableStandardOData=»true»>
<httpServices publishByDefault=»false»/>
<ws>
<point name=»AddressSystem»
alias=»AddressSystem.1cws»
enable=»true»/>
<point name=»DMMessageService»
alias=»dmmessage.1cws»
enable=»true»/>
<point name=»DMService»
alias=»dm.1cws»
enable=»true»/>
<point name=»DMX»
alias=»DMX.1cws»
enable=»true»/>
<point name=»EnterpriseDataExchange_1_0_1_1″
alias=»EnterpriseDataExchange_1_0_1_1.1cws»
enable=»true»/>
<point name=»EnterpriseDataUpload_1_0_1_1″
alias=»EnterpriseDataUpload_1_0_1_1.1cws»
enable=»true»/>
<point name=»Exchange»
alias=»exchange.1cws»
enable=»true»/>
<point name=»Exchange_2_0_1_6″
alias=»exchange_2_0_1_6.1cws»
enable=»true»/>
<point name=»Files»
alias=»files.1cws»
enable=»true»/>
<point name=»InterfaceVersion»
alias=»InterfaceVersion.1cws»
enable=»true»/>
<point name=»MEDO»
alias=»medo.1cws»
enable=»true»/>
<point name=»MEDO1C»
alias=»medo1c.1cws»
enable=»true»/>
<point name=»MobileDMVersionService»
alias=»mobileDMVersionService.1cws»
enable=»true»/>
<point name=»MEDO2013″
alias=»medo2013.1cws»
enable=»true»/>
</ws>
<openid>
<rely url=»https://localhost:443/SPPR//e1cib/oid2op»/>;
</openid>
</point>
И содержимое файла oid2op
<?xml version=»1.0″ encoding=»UTF-8″?>
<xrds:XRDS xmlns:xrds=»xri://$xrds» xmlns=»xri://$xrd*($v*2.0)»>
<XRD>
<Service priority=’0′>
<Type>http://specs.openid.net/auth/2.0/server</Type>;;
<URI>https://localhost:443/mybase/e1cib/oid2op</URI>;;
</Service>
</XRD>
</xrds:XRDS>
Всё-равно вылезает стандартное окно 1С-аутентификации.
17 — 19.09.16 — 10:53
18 — 19.09.16 — 11:00
(17) Сертификаты для https как настраивал?
19 — 19.09.16 — 11:00
сама ссылкка в браузере открывается?
20 — 19.09.16 — 11:03
А попробуй в настройках не локалхост указать, а нормальный,внешний, айпишник.
21 — 19.09.16 — 11:08
(18) сертификаты как описано в статье в (16)
http://adminsnotes.blogspot.ru/2008/01/apache-openssl-windows.html
В командной строке прописывали нужные команды. Всё как по инструкции
(20) Сейчас попробую.
22 — 19.09.16 — 11:10
+ (20) Клиент возможно пытается на 127.0.0.1 искать openid сервер.
23 — 19.09.16 — 11:16
(22) я первый раз такое пытаюсь поднять: разве openid-сервером в данном случае не выступает база 1С?
24 — 19.09.16 — 11:22
25 — 19.09.16 — 11:27
(24) Да. Скачивается файлик. Как в статье на ITS описано.
<?xml version=»1.0″ encoding=»UTF-8″?>
<xrds:XRDS xmlns:xrds=»xri://$xrds» xmlns=»xri://$xrd*($v*2.0)»>
<XRD>
<Service priority=’0′>
<Type>http://specs.openid.net/auth/2.0/server</Type>;;;
<URI>https://localhost:443/mybase/e1cib/oid2op</URI>;;;
</Service>
</XRD>
</xrds:XRDS>
26 — 19.09.16 — 15:25
Если через тонкий клиент и выставить параметр запуска /OIDA+, то такая ошибка лезет:
«1с ошибка подключения к openid провайдеру https://localhost:443/mybase/e1cib/oid2op»; и предлагает повторить попытку подключения
Через браузер даже окошко OpenID-аутентификации не лезет.
Может, чего с юзерами намудрил? В базе-провайдере: создал админа с полными правами и ролью администратор системы, поставил галку «Аутентификация 1С: предприятия» и галку «Аутентификация OpenID». Во второй базе, где указана ссылка на провайдер OpenID, просто создал юзера с таким же логином и правами, но выставил только галку «Аутентификация OpneID».
27 — 19.09.16 — 15:48
Если просто без ввода пароля нажать вход, то получаем ошибку: «Ошибка OpenID-аутентификации пользователя(Тонкий клиент).
Что за бяка-кака(((
28 — 19.09.16 — 18:30
Внешний айпишник указывал? У тебя клиент пытается на локалхосте найти опенайди сервер.
29 — 19.09.16 — 18:34
(26) Ты уже выяснил чей список показывается: свой или чужой?
30 — 19.09.16 — 18:35
И в тж что пишется?
31 — 19.09.16 — 18:35
попробуй полный собрать
32 — 19.09.16 — 18:36
ну и платформу не ниже 8.3.8.2027
33 — 20.09.16 — 08:36
(28) Внешний айпи не указывал, ибо пока тестирую всё на рабочем компе.
(29) В тонком клиенте в окне OpenID-аутентификации не отображаются пользователи в списке вообще. Приходится руками писать имя и пароль. Если вводишь корректные данные — ругается, что ошибка соедигнения с сервером OpenID, если оставляешь пароль пустым — вылетает ошибка «Ошибка OpenID аутентификации(тонкий клиент)
(32) Платформа 8.3.8.1933+сервер x64
(31) Не совсем понял.
(30) В ТЖ вот что вижу:
Statistics: RecordsScanned = 1, ParseTime = 0, ExecuteTime = 0, BuffersMemory = 32988, ResultRecords = 1, RecordSize = 731′,Rows=1
28:59.980006-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=4184,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_oid2op_auth,Value=’OpenID:20160920042859:9f6a9aee-ba45-4104-919a-5c161bf1edf8:gpJlceZT/y6QRXQEVcRMe7nlPHdTgWus2RJmM9ogOwc=’
28:59.980007-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2027,file=srcVResourceOpenID2Impl.cpp,threadId=4184,func=process_oid2op_request,OP=auth OK
28:59.995001-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1128,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RP=request received
28:59.995002-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1409,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RPCommand=init
28:59.995003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1413,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RP=init command
28:59.995004-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=
28:59.995005-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_oid2rp_sii,Value=966271582496286583:3393608938:1CV8C:
28:59.995006-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2578,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=performDiscovery,RP=open https://localhost:443/SPPR/e1cib/oid2op
29:00.011000-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2584,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=performDiscovery,RP XRDS parsing=downloading and parsing
29:00.026000-0,EXCP,0,process=httpd,Exception=9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3,Descr=»srcLibxml2_Intf.cpp(136):
9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3: Ошибка доступа к файлу ‘https://localhost:443/SPPR/e1cib/oid2op’: srcHTTPImpl.cpp(2559):
896db6ac-cc39-4065-8298-1bf5fccb9d98: Ошибка работы с Интернет: Удаленный узел не прошел проверку»
29:00.026001-0,EXCP,0,process=httpd,Exception=c593fe3b-aeaf-496a-a32e-6b4dc2d13fff,Descr=’srcVResourceOpenID2Impl.cpp(2555):
c593fe3b-aeaf-496a-a32e-6b4dc2d13fff: Ошибка разбора XML: — [1,1]
Фатальная ошибка:
Extra content at the end of the document
SystemId: https://localhost:443/SPPR/e1cib/oid2op’
29:00.026002-0,SYSTEM,0,process=httpd,level=INFO,component=vrsbase,class=OID2Log,line=1437,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=process_oid2rp_request,RP=OP DISCOVERY ERROR https://localhost:443/SPPR/e1cib/oid2op
29:00.026003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=2212,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=1
34 — 20.09.16 — 09:19
Обновляю платформу до 8.3.8.2088
35 — 20.09.16 — 14:34
Та же беда. И в cacert.pem отпечаток прописал, и как только уже не изголялся. Не работает.
36 — 28.09.16 — 10:43
попробуем ещё раз:) Апну темку)))
Кирпичами прошу не кидаться:)
Итак, было сделано следующее:
1.Установлены 1С:предприятие 8.3.8.2088+Сервер 1С: предприятия(х64) того же релиза(чтобы получить 64х-компоненты для взаимодействия с Apache 2.4.4(x64))
2. Установлен веб-сервер Apache 2.4.4(x64) с поддержкой OpenSSL/1.0.1e
3. Настроены Apache и SSL согластно инструкции http://catalog.mista.ru/public/146288/
4. в каталоге bin платформы и сервера в файлы cacert.pem добавлены отпечатки, полученные строго по инструкции http://1centerprise8.blogspot.ru/2015/08/post-https-82.html
5. Сертификат был успешно импортированы в винду в доверенные корневые центры сертификации
7. Опубликована база-провайдер с галкой «Использовать в качестве OpenID-провайдера» и временем жизни соединения 432 000 секунд.
7. Ссылка на провадйер openid получилась такой: https://myserver/SPPR/e1cib/oid2op
Как в инструкции на its
8. создан тестовый пользователь в базе провайдере СППР: OpenID, способ аутентификации 1С, пароль и роли установлены;
9. В базе-примемнике создан пользователь с таким же логином и ролями, но способ аутентификации указан OpenID;
10. Источник, примемник, настройки OpenID доступны по ссылкам;
11. Настроен технологический журнал в соответствии с интсрукцией на ИТС(получение событий OpenID)
В итоге:
1. Подключаемся к базе-приемнику по тонкому клиенту: появляется окно OpenID-аутентификации со ссылкой на провайдер, вводим логин, пароль вводим пустой или неправильный: получаем ошибку «Ошибка OpenID-аутентификации пользователя(тонкий клиент). В тех журнале наблюдаем:
38:11.145002-0,SYSTEM,0,process=httpd,level=INFO,component=vrsbase,class=OID2Log,line=1437,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=process_oid2rp_request,RP=OP DISCOVERY ERROR https://kab314-12/SPPR/e1cib/oid2op
38:11.145003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=1
39:27.810001-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=1977,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=process_oid2op_request,OP=auth command
39:27.810002-0,SYSTEM,0,process=httpd,level=DEBUG,component=vrsbase,class=OID2Log,line=393,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=read_message,Msg=»can’t set msg param»,Key=auth.pwd,Value=
39:27.810005-1,DBV8DBEng,1,process=httpd,Trans=0,Sql=»SELECT TOP 2147483647 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users
WHERE Name = N’OpenID’ AND ID <> 0x952A5019EAE6A1F74023E7966E3EE1DE
ORDER BY Name»,NParams=0,Rows=1,Func=getExecSQLStatistics
39:27.810006-3,DBV8DBEng,0,process=httpd,Trans=0,Sql=»SELECT TOP 2147483647 ID, Name, Descr, OSName, Changed, RolesID, Show, Data, EAuth, AdmRole, UsSprH
FROM v8users
WHERE Name = N’OpenID’ AND ID <> 0x952A5019EAE6A1F74023E7966E3EE1DE
ORDER BY Name»,NParams=0,planSQLText=’Fields:(
ID,
Name,
Descr,
OSName,
Changed,
RolesID,
Show,
Data,
EAuth,
AdmRole,
UsSprH
)
V8USERS (v8users) RANGE SCAN USING INDEX (BYNAME) (1 fields)
WHERE
(ID <> 952A5019EAE6A1F74023E7966E3EE1DE)
Statistics: RecordsScanned = 1, ParseTime = 0, ExecuteTime = 0, BuffersMemory = 32982, ResultRecords = 1, RecordSize = 731′,Rows=1
39:27.810009-1,DBV8DBEng,1,process=httpd,Trans=0,Func=selectFileName,FileName=ibparams.inf
39:27.810010-3,DBV8DBEng,0,process=httpd,Trans=0,Func=readFile,CatName=Params,FileName=ibparams.inf
39:27.810011-0,SYSTEM,0,process=httpd,level=DEBUG,component=vrsbase,class=OID2Log,line=966,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=oid2op_check_cred,OP=invalid credentials,Username=OpenID
39:27.810012-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=2045,file=srcVResourceOpenID2Impl.cpp,threadId=1028,func=process_oid2op_request,OP=auth FAILED
2. Подключаемся к базе-приемнику по тонкому клиенту: появляется окно OpenID-аутентификации со ссылкой на провайдер, вводим КОРРЕКТНЫЕ логин/пароль(как в базе-провайдере), получаем «Ошибка подключения к OpenID-провайдеру https://myserver/SPPR/e1cib/oid2op»;
В тех.журнале видим следующее:
40:46.097000-0,EXCP,0,process=httpd,Exception=9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3,Descr=»srcLibxml2_Intf.cpp(136):
9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3: Ошибка доступа к файлу ‘https://kab314-12/SPPR/e1cib/oid2op’: srcHTTPImpl.cpp(2559):
896db6ac-cc39-4065-8298-1bf5fccb9d98: Ошибка работы с Интернет: Удаленный узел не прошел проверку»
40:46.097001-0,EXCP,0,process=httpd,Exception=c593fe3b-aeaf-496a-a32e-6b4dc2d13fff,Descr=’srcVResourceOpenID2Impl.cpp(2556):
c593fe3b-aeaf-496a-a32e-6b4dc2d13fff: Ошибка разбора XML: — [1,1]
Фатальная ошибка:
Extra content at the end of the document
SystemId: https://kab314-12/SPPR/e1cib/oid2op’
40:46.097002-0,SYSTEM,0,process=httpd,level=INFO,component=vrsbase,class=OID2Log,line=1437,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=process_oid2rp_request,RP=OP DISCOVERY ERROR https://kab314-12/SPPR/e1cib/oid2op
40:46.097003-0,SYSTEM,0,process=httpd,level=TRACE,component=vrsbase,class=OID2Log,line=281,file=srcVResourceOpenID2Impl.cpp,threadId=1884,func=RequestCookies::setCookie,Msg=set cookie,Name=vrs_nooida,Value=1
Сервер и клиент всё поднято на одном компе, в апаче настроен виртуальный хост как по инструкции.
Почему пишет «узел не прошел проверку» и «ошибка работы с интернет» — для меня большая загадка(((
_stay true_
37 — 28.09.16 — 10:47
myserver=kab 314-12
| title | titleSuffix | description | services | author | manager | ms.service | ms.subservice | ms.workload | ms.topic | ms.date | ms.author | ms.reviewer | ms.custom | ms.openlocfilehash | ms.sourcegitcommit | ms.translationtype | ms.contentlocale | ms.lasthandoff | ms.locfileid |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Платформа удостоверений Майкрософт и протокол подключения OpenID | Azure |
Microsoft identity platform |
Создайте веб-приложение, используя реализацию платформы удостоверений Майкрософт с протоколом аутентификации OpenID Connect. |
active-directory |
hpsin |
CelesteDG |
active-directory |
develop |
identity |
conceptual |
05/22/2020 |
hirsin |
hirsin |
aaddev, identityplatformtop40 |
de1fcdc259de3f72e35feb411bcc836354352eb4 |
910a1a38711966cb171050db245fc3b22abc8c5f |
MT |
ru-RU |
03/19/2021 |
98752586 |
Платформа удостоверений Майкрософт и протокол OpenID Connect
OpenID Connect Connect (OIDC) — это протокол проверки подлинности, созданный на основе OAuth 2,0, который можно использовать для безопасного входа пользователя в приложение. При использовании реализации OpenID Connect Connect платформы Microsoft Identity можно добавить доступ к приложениям для входа и API. В этой статье показано, как сделать это независимо от языка и как отправлять и получать сообщения HTTP без использования библиотек с открытым исходным кодом Майкрософт.
OpenID Connect Connect расширяет протокол авторизации OAuth 2,0 для использования в качестве протокола проверки подлинности , чтобы можно было выполнять единый вход с помощью OAuth. В OpenID Connect вводится понятие маркера идентификации, который представляет собой маркер безопасности, позволяющий клиенту проверять личность пользователя. Маркер идентификации также позволяет получить базовые сведения о профиле пользователя. В нем также введена Конечная точка UserInfo— API, возвращающий сведения о пользователе.
Схема протокола. Вход
На следующей схеме показаны этапы самого простого потока входа. Каждый этап подробно описан в этой статье.
Получение документа метаданных OpenID Connect
OpenID Connect Connect описывает документ метаданных (RFC) , который содержит большую часть сведений, необходимых приложению для входа. Сюда входят такие сведения, как используемые URL-адреса и расположение открытых ключей подписывания службы. Этот документ можно найти, добавив путь к документу обнаружения в URL-адрес центра сертификации:
Путь к документу обнаружения: /.well-known/openid-configuration
Авторизации https://login.microsoftonline.com/{tenant}/v2.0
{tenant} может принимать одно из четырех значений.
| Значение | Описание |
|---|---|
common |
Пользователи с личной учетной записью Майкрософт и рабочей или учебной учетной записью Azure AD могут выполнять вход в приложение. |
organizations |
Вход в приложение могут выполнять только пользователи с рабочими или учебными учетными записями Azure AD. |
consumers |
Вход в приложение могут выполнять только пользователи с личной учетной записью Майкрософт. |
8eaef023-2b34-4da1-9baa-8bc8c9d6a490 либо contoso.onmicrosoft.com |
Только пользователи из определенного клиента Azure AD (участники в каталоге с рабочей или учебной учетной записью или гости в каталоге с личной учетной записью Майкрософт) могут выполнить вход в приложение. Можно использовать понятное доменное имя клиента Azure AD или идентификатор GUID клиента. Можно также использовать клиент-потребитель 9188040d-6c67-4c5b-b112-36a304b66dad (вместо клиента consumers). |
Этот центр отличается в разных национальных облаках, например https://login.microsoftonline.de для экземпляра Azure AD для Германии. Если вы не используете общедоступное облако, проверьте национальные конечные точки национального облака , чтобы найти подходящий. Убедитесь, что клиент и есть /v2.0/ в запросе, чтобы можно было использовать версию версии 2.0 конечной точки.
[!TIP]
Тестирование Щелкните, https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration чтобы просмотретьcommonконфигурацию.
Пример запроса
Чтобы вызвать конечную точку UserInfo для общих полномочий в общедоступном облаке, используйте следующую команду:
GET /common/v2.0/.well-known/openid-configuration Host: login.microsoftonline.com
Пример ответа
Метаданные — это простой документ JSON. В качестве примера ниже приведен фрагмент кода. Содержимое полностью описано в спецификации OpenID Connect Connect.
{
"authorization_endpoint": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize",
"token_endpoint": "https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token",
"token_endpoint_auth_methods_supported": [
"client_secret_post",
"private_key_jwt"
],
"jwks_uri": "https://login.microsoftonline.com/{tenant}/discovery/v2.0/keys",
"userinfo_endpoint": "https://graph.microsoft.com/oidc/userinfo",
"subject_types_supported": [
"pairwise"
],
...
}
Если в приложении есть настраиваемые ключи подписывания в результате использования функции сопоставления утверждений, необходимо добавить параметр запроса appid, содержащий идентификатор приложения, чтобы получить jwks_uri, указывающий на сведения о ключе подписывания приложения. Например: https://login.microsoftonline.com/{tenant}/v2.0/.well-known/openid-configuration?appid=6731de76-14a6-49ae-97bc-6eba6914391e содержит jwks_uri для https://login.microsoftonline.com/{tenant}/discovery/v2.0/keys?appid=6731de76-14a6-49ae-97bc-6eba6914391e.
Как правило, этот документ метаданных используется для настройки библиотеки OpenID Connect или пакета SDK. Метаданные будут использоваться для работы библиотеки. Однако если вы не используете предварительно созданную библиотеку OpenID Connect Connect, вы можете выполнить действия, описанные в оставшейся части этой статьи, чтобы выполнить вход в веб-приложение с помощью платформы Microsoft Identity.
Отправка запроса на вход
Если веб-приложению требуется проверить подлинность пользователя, оно может направить его к конечной точке /authorize . Этот запрос похож на первый этап потока кода авторизации OAuth 2.0 с несколькими важными различиями, которые приведены ниже.
- Запрос должен содержать область
openidв параметреscope. - Параметр
response_typeдолжен включатьid_token. - Запрос должен содержать параметр
nonce.
[!IMPORTANT]
Чтобы успешно выполнить запрос маркера идентификации из конечной точки /authorization, на вкладке «Проверка подлинности» для регистрации приложения на портале регистрации нужно включить неявное предоставление разрешения id_tokens (что устанавливает флагoauth2AllowIdTokenImplicitFlowв манифесте приложения равнымtrue). Если его не включить, возникнет следующая ошибкаunsupported_response: «The provided value for the input parameter ‘response_type’ isn’t allowed for this client. Expected value is ‘code'» (Указанное значение параметра response_type запрещено для данного клиента. Ожидаемое значение: code).
Пример:
// Line breaks are for legibility only. GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize? client_id=6731de76-14a6-49ae-97bc-6eba6914391e &response_type=id_token &redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F &response_mode=form_post &scope=openid &state=12345 &nonce=678910
| Параметр | Условие | Описание |
|---|---|---|
tenant |
Обязательно | Значение {tenant} в пути запроса можно использовать для того, чтобы контролировать вход пользователей в приложение. Допустимые значения: common, organizations, consumers, а также идентификаторы клиента. Чтобы узнать больше, ознакомьтесь с основами протокола. |
client_id |
Обязательно | Идентификатор приложения (клиента) , назначенный вашему приложению функцией Регистрация приложений портала Azure. |
response_type |
Обязательно | Должен включать id_token для входа в OpenID Connect. Кроме того, может включать другие значения response_type, например code. |
redirect_uri |
Рекомендуемая | Универсальный код ресурса (URI) перенаправления приложения, на который можно отправлять ответы аутентификации для их получения приложением. Он должен в точности соответствовать одному из универсальных кодов ресурсов (URI) перенаправления, зарегистрированных на портале, но иметь форму URL-адреса. Если он отсутствует, конечная точка будет случайным образом выбирать один зарегистрированный redirect_uri, чтобы отправить обратно пользователю. |
scope |
Обязательно | Список областей с разделителями-пробелами. При использовании протокола OpenID Connect он должен содержать область openid, что преобразуется в разрешение «Вход» в пользовательском интерфейсе предоставления согласия. Для предоставления согласия этот запрос может также включать в себя другие области. |
nonce |
Обязательно | Значение, включенное в запрос и созданное приложением, которое будет добавлено в полученное значение id_token в качестве утверждения. Приложение может проверить это значение во избежание атак с использованием воспроизведения маркера. Как правило, это значение представляет собой случайную уникальную строку, которую можно использовать для определения источника запроса. |
response_mode |
Рекомендуемая | Указывает метод, с помощью которого следует отправлять полученный код авторизации приложению. Может иметь значение form_post или fragment. Для веб-приложений рекомендуется использовать response_mode=form_post, чтобы обеспечить наиболее безопасную передачу маркеров в приложение. |
state |
Рекомендуемая | Значение, включенное в запрос, которое также возвращается в ответе маркера. Это может быть строка любого содержания. Как правило, с целью предотвращения подделки межсайтовых запросов используется генерируемое случайным образом уникальное значение. Параметр state используется также для кодирования сведений о состоянии пользователя в приложении перед созданием запроса на аутентификацию, например сведений об открытой на тот момент странице или представлении. |
prompt |
Необязательно | Указывает требуемый тип взаимодействия с пользователем. На текущий момент единственные допустимые значения — login, none и consent. Утверждение prompt=login требует от пользователя ввести учетные данные по запросу. Единый вход не сработает. Утверждение prompt=none является противоположным. Оно гарантирует, что для пользователя не будут выводиться интерактивные запросы. Если запрос не может быть выполнен автоматически с помощью единого входа, платформа Microsoft Identity возвращает ошибку. Утверждение prompt=consent активирует диалоговое окно предоставления согласия OAuth после входа пользователя в систему. В нем у пользователя запрашиваются разрешения для приложения. |
login_hint |
Необязательно | Этот параметр можно применять для предварительного заполнения полей имени пользователя и электронного адреса на странице входа пользователя (если имя пользователя известно заранее). Зачастую этот параметр используется в приложениях при повторной аутентификации. При этом имя пользователя, указанное во время предыдущего входа, извлекается с помощью утверждения preferred_username. |
domain_hint |
Необязательно | Область пользователя в федеративном каталоге. Если используется этот параметр, процесс обнаружения на основе электронной почты, который проходит пользователь на странице входа, пропускается, что немного оптимизирует работу. Для клиентов, объединяемых в федерацию на основе локального каталога, например AD FS, это часто позволяет автоматически входить в систему благодаря наличию текущего сеанса. |
На текущем этапе пользователю предлагается ввести учетные данные и завершить аутентификацию. Платформа Microsoft Identity проверяет, что пользователь предоставил разрешения, указанные в scope параметре запроса. Если пользователь не предоставил никаких разрешений, платформа удостоверений Майкрософт предлагает пользователю подтвердить необходимые разрешения. Вы можете прочитать дополнительные сведения о разрешениях, согласии и мультитенантных приложениях.
После того как пользователь пройдет проверку подлинности и предоставит согласие, платформа удостоверений Майкрософт возвращает ответ на ваше приложение на указанном URI перенаправления с помощью метода, указанного в response_mode параметре.
Успешный ответ
Успешный ответ при использовании response_mode=form_post выглядит следующим образом.
POST /myapp/ HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik1uQ19WWmNB...&state=12345
| Параметр | Описание |
|---|---|
id_token |
Маркер идентификации, запрошенный приложением. Вы можете использовать параметр id_token для проверки личности пользователя и запуска сеанса пользователя. См. дополнительные сведения о маркерах идентификации и их содержимом в справочнике по id_tokens. |
state |
Если запрос содержит параметр state, то в ответе должно отображаться то же значение. Приложение должно проверить, совпадают ли значения параметра «state» в запросе и ответе. |
Сообщение об ошибке
Сообщения об ошибках также можно отправлять на универсальный код ресурса (URI) перенаправления, чтобы приложение могло их обработать. Сообщение об ошибке выглядит следующим образом.
POST /myapp/ HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded error=access_denied&error_description=the+user+canceled+the+authentication
| Параметр | Описание |
|---|---|
error |
Строка кода ошибки, которую можно использовать для классификации типов возникших ошибок и реагирования на них. |
error_description |
Конкретное сообщение об ошибке, с помощью которого можно определить первопричину возникновения ошибки аутентификации. |
Коды ошибок конечной точки авторизации
В таблице ниже описаны коды ошибок, которые могут возвращаться в параметре error сообщения об ошибке.
| Код ошибки | Описание | Действие клиента |
|---|---|---|
invalid_request |
Ошибка протокола, например отсутствует обязательный параметр. | Исправьте запрос и отправьте его повторно. Это ошибка разработки, которая, как правило, обнаруживается во время первоначального тестирования. |
unauthorized_client |
Клиентское приложение не может запрашивать код авторизации. | Как правило, это происходит, если клиентское приложение не зарегистрировано в Azure AD или не добавлено в клиент Azure AD пользователя. Приложение может отобразить для пользователя запрос с инструкцией по установке приложения и его добавлению в Azure AD. |
access_denied |
Владелец ресурса не дал согласия. | Клиентское приложение может уведомить пользователя, что для продолжения работы необходимо согласие пользователя. |
unsupported_response_type |
Сервер авторизации не поддерживает тип ответа в запросе. | Исправьте запрос и отправьте его повторно. Это ошибка разработки, которая, как правило, обнаруживается во время первоначального тестирования. |
server_error |
Сервер обнаружил непредвиденную ошибку. | Повторите запрос. Эти ошибки могут возникать в связи с временными условиями. Из клиентского приложения может поступить сообщение о том, что его ответ задерживается из-за временной ошибки. |
temporarily_unavailable |
Сервер временно занят и не может обработать запрос. | Повторите запрос. Из клиентского приложения может поступить сообщение о том, что его ответ задерживается из-за временного состояния. |
invalid_resource |
Целевой ресурс является недопустимым, так как он не существует. Azure AD не удается найти ресурс, или он настроен неправильно. | Это означает, что ресурс, если он существует, не настроен в клиенте. Приложение может отобразить для пользователя запрос с инструкциями по установке приложения и его добавлению в Azure AD. |
Проверка маркера идентификации
Простое получение id_token не всегда достаточно для проверки подлинности пользователя; Вам также может потребоваться проверить подпись id_token и проверить утверждения в маркере на соответствие требованиям приложения. Как и все платформы OIDC, платформа Microsoft Identity использует токены JSON Web tokens (JWT) и шифрование с открытым ключом для подписи маркеров идентификации и проверки их допустимости.
Не все приложения получают преимущества от проверки маркера идентификации — собственных приложений и одностраничных приложений, например, редкое преимущество проверки маркера идентификации. Пользователь с физическим доступом к устройству (или браузеру) может обходить проверку различными способами — от изменения веб-трафика до устройства, чтобы предоставить фиктивные токены и ключи для простого отладки приложения, чтобы пропустить логику проверки. С другой стороны, веб-приложения и API, использующие маркер идентификации для авторизации, должны тщательно проверять маркер идентификации, так как они определяют доступ к данным.
После проверки подписи токена id_token вам потребуется проверить несколько утверждений. См. справочник по id_token и дополнительные сведения о проверке маркеров и смене ключей подписывания. Советуем использовать библиотеку для синтаксического анализа и проверки токенов. Для большинства языков и платформ доступна по крайней мере одна такая библиотека.
Вам также может потребоваться проверить дополнительные утверждения в зависимости от сценария. Ниже приведены некоторые из стандартных проверок:
- Обеспечение регистрации пользователя или организации в приложении.
- Предоставление пользователю необходимого уровня авторизации и привилегий.
- Обеспечение определенного уровня аутентификации, например многофакторной проверки подлинности.
После полной проверки токена id_token вы можете начать сеанс с пользователем и использовать утверждения в токене id_token для получения сведений о пользователе в приложении. Эти сведения можно использовать для отображения, регистрации, персонализации и т. д.
Схема протокола. Получение маркера доступа
Многим веб-приложениям требуется не только выполнить вход пользователя, но и получить доступ к веб-службе от имени этого пользователя с помощью OAuth. Этот сценарий совмещает применение OpenID Connect для аутентификации пользователей и одновременное получение кода авторизации, который можно использовать для получения маркеров доступа с помощью потока кода авторизации OAuth.
Полный поток входа OpenID Connect и получения маркера представлен на следующей схеме. Каждый этап подробно описан в следующих разделах статьи.
Получение маркера доступа для вызова UserInfo
Чтобы получить маркер для конечной точки UserInfo OIDC, измените запрос на вход:
// Line breaks are for legibility only. GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize? client_id=6731de76-14a6-49ae-97bc-6eba6914391e // Your registered Application ID &response_type=id_token%20token // this will return both an id_token and an access token &redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F // Your registered redirect URI, URL encoded &response_mode=form_post // 'form_post' or 'fragment' &scope=openid+profile+email // `openid` is required. `profile` and `email` provide additional information in the UserInfo endpoint the same way they do in an ID token. &state=12345 // Any value, provided by your app &nonce=678910 // Any value, provided by your app
Можно также использовать поток кода авторизации, поток кода устройстваили маркер обновления вместо того, response_type=token чтобы получить маркер для приложения.
[!TIP]
Чтобы выполнить этот запрос, щелкните приведенную ниже ссылку. После входа в систему браузер перенаправляется вhttps://localhost/myapp/, с маркером идентификации и маркером в адресной строке. Обратите внимание, что этот запрос используетсяresponse_mode=fragmentтолько в демонстрационных целях. для webapp мы рекомендуем использоватьform_postдля обеспечения дополнительной безопасности, когда это возможно.
https://login.microsoftonline.com/common/oauth2/v2.0/authorize…
Успешный ответ маркера
Успешный ответ с использованием response_mode=form_post выглядит следующим образом.
POST /myapp/ HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded access_token=eyJ0eXAiOiJKV1QiLCJub25jZSI6I.... &token_type=Bearer &expires_in=3598 &scope=email+openid+profile &id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI.... &state=12345
Параметры ответа означают одно и то же действие независимо от последовательности, используемой для их получения.
| Параметр | Описание |
|---|---|
access_token |
Токен, который будет использоваться для вызова конечной точки UserInfo. |
token_type |
Всегда является «Bearer» |
expires_in |
Время до истечения срока действия маркера доступа в секундах. |
scope |
Разрешения, предоставленные маркеру доступа. Обратите внимание, что так как конечная точка UserInfo размещается в Microsoft Graph, могут отображаться дополнительные области графа (например, пользователь. Read), если они были ранее предоставлены приложению. Это обусловлено тем, что маркер для данного ресурса всегда включает в себя все разрешения, которые в настоящее время предоставлены клиенту. |
id_token |
Маркер идентификации, запрошенный приложением. Вы можете использовать маркер идентификации для проверки личности пользователя и запуска сеанса пользователя. См. дополнительные сведения о маркерах идентификации и их содержимом в справочнике по id_tokens. |
state |
Если в запрос включен этот параметр состояния, идентичное значение должно содержаться и в ответе на этот запрос. Приложение должно проверить, совпадают ли значения параметра «state» в запросе и ответе. |
Сообщение об ошибке
Сообщения об ошибках также можно отправлять на универсальный код ресурса (URI) перенаправления, чтобы приложение могло их правильно обработать. Сообщение об ошибке выглядит следующим образом.
POST /myapp/ HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded error=access_denied&error_description=the+user+canceled+the+authentication
| Параметр | Описание |
|---|---|
error |
Строка кода ошибки, которую можно использовать для классификации типов возникших ошибок и реагирования на них. |
error_description |
Конкретное сообщение об ошибке, с помощью которого можно определить первопричину возникновения ошибки аутентификации. |
Описание возможных кодов ошибок и рекомендуемые ответы клиента см. в разделе Коды ошибок конечной точки авторизации.
После получения кода авторизации и маркера идентификации можно выполнить вход пользователя в систему и получить маркеры доступа от его имени. Для входа пользователя необходимо проверить маркер идентификации в точности, как описано выше. Для получения маркеров доступа следует выполнить действия, описанные в документации по потоку кода OAuth.
Вызов конечной точки UserInfo
Просмотрите документацию UserInfo , чтобы узнать, как вызвать конечную точку UserInfo с помощью этого маркера.
Отправка запроса на выход
Для выхода пользователя из приложения недостаточно очистить файлы cookie или каким-то другим образом завершить сеанс пользователя. Необходимо также перенаправить пользователя на платформу Microsoft Identity для выхода. Если этого не сделать, то пользователь повторно выполняет проверку подлинности в приложении без ввода учетных данных, так как у них будет действительный сеанс единого входа с платформой Microsoft Identity.
Можно перенаправить пользователя на адрес, указанный в параметре end_session_endpoint в документе метаданных OpenID Connect:
GET https://login.microsoftonline.com/common/oauth2/v2.0/logout? post_logout_redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
| Параметр | Условие | Описание |
|---|---|---|
post_logout_redirect_uri |
Рекомендуемая | URL-адрес, на который перенаправляется пользователь после успешного выхода. Если параметр не включен, пользователь показывает общее сообщение, созданное платформой идентификации Майкрософт. URL-адрес должен в точности соответствовать одному из универсальных кодов ресурсов (URI) перенаправления, зарегистрированных для приложения на портале регистрации приложений. |
Единый выход
При перенаправлении пользователя в end_session_endpoint платформа Microsoft Identity очищает сеанс пользователя из браузера. Тем не менее пользователь может оставаться вошедшим в другие приложения, использующие учетные записи Майкрософт для аутентификации. Чтобы разрешить этим приложениям одновременный выход пользователя из системы, платформа Microsoft Identity отправляет запрос HTTP GET зарегистрированным LogoutUrl приложениям, на которые пользователь вошел в систему. Приложения должны ответить на него, удалив любой сеанс, который идентифицирует пользователя, и возвратив ответ 200. Для поддержки единого входа в приложении необходимо реализовать LogoutUrl в коде приложения. LogoutUrl можно задать на портале регистрации приложения.
Дальнейшие действия
- Ознакомьтесь с документацией по UserInfo
- Узнайте, как настроить значения в маркере с помощью данных из локальных систем.
- Узнайте, как включить дополнительные стандартные утверждения в токены.





















