У меня есть страница ASP.NET, размещенная на внешнем веб-сервере, встроенном в iFrame в контактную форму в CRM Online. На данный момент страница, представленная в iFrame, доступна для всего веб-сайта, но я хотел бы ограничить доступ только к пользователям, прошедшим проверку подлинности в CRM Online/Office 365. Есть ли у меня способ программно проверить, пользователь аутентифицируется в CRM Online/Office 365 из моего внешнего приложения? Я не заинтересован в том, чтобы внедрять/проверять подлинность пользователей в моем iFrame, но я просто хотел бы посмотреть, имеют ли они действительный сеанс входа в систему, и если да, отобразите страницу, а если нет, скройте ее. Любая обратная связь или направление будут высоко оценены.Программно Проверьте, прошел ли аутентификация пользователя в Office 365/CRM Online
ответ
В этом случае его, вероятно, проще всего сделать следующее:
Настройка веб-страницы для захвата идетнификации - вам нужно будет сделать, это признать, кто пользователь. Это будет во многом зависеть от того, какой метод аутентификации вы используете. Например, с помощью Windows Authentication вы можете получить имя домена пользователя, то есть
MyDomain\james.wood
.Затем запросите CRM через веб-службы, чтобы проверить, имеет ли этот пользователь (например, на основе имени домена) системный пользователь с ролями безопасности или конкретными привилегиями.
Таким образом, вам не нужно беспокоиться о том, что они действительно вошли в систему CRM. Вы просто проверяете, имеет ли пользователь доступ к данным в CRM. Вы можете изучить дополнительные проверки, чтобы, если веб-страница открыта вне CRM-iframe, вы не показываете содержимое веб-страницы. Кроме того, вы можете пойти еще дальше и олицетворять пользователя в любых вызовах веб-службы CRM.
Вы можете найти следующее полезное.
- Authenticate users in Microsoft Dynamics CRM.
- Sample: Determine whether a user has a role.
- Impersonate another user.
Редактировать
В качестве альтернативы вы можете посмотреть реализовать единый вход.
Спасибо за ответ. Я смог запросить учетные данные и проверить подлинность для веб-служб CRM. Однако мы надеялись избежать повторного запроса учетных данных и вместо этого использовать существующий сеанс входа в систему CRM Online/Office 365/«токен», поскольку пользователь уже прошел аутентификацию. Я не уверен, есть ли способ «передать» сеанс в наше приложение, которое выполняется в iFrame или сделать какой-то вызов из нашего iFrame в конечную точку маркера, чтобы определить, аутентифицирован ли пользователь. Может быть, даже cookie, который мы могли бы прочитать из браузера? –
@JoshMorton, я думаю, что вам нужен один знак, тогда, см. Мое редактирование –
Я предполагаю, что вы - ссылка внизу - это ответ на мой вопрос? http://stackoverflow.com/questions/37056199/how-to-setup-an-mvc-website-to-use-the-same-sso-as-crm-online-so-that-it-can-be – Daryl
Возможно, SAML может это сделать? –