0

Я разрабатываю приложение ASP.Net MVC 2 как составное приложение в SalesForce.com. Для тех, кто не знаком с SalesForce.com, это платформа CRM в Интернете. То, что это сложное приложение, просто показано внутри iframe на отдельной вкладке. Итак, когда пользователь регистрируется на salesforce.com, пользователь видит кучу вкладок. Мое приложение доступно, когда пользователь нажимает на вкладку моего приложения. Затем SalesForce.com передает URL-адрес моего идентификатора сеанса приложения Salesforce, который я могу использовать для доступа к данным Salesforce, не требуя от пользователя входа. Я, вероятно, потерял много пользователей, которые просто сказали бы: «Эй, это продавец. задайте их конкретный вопрос ». Ну, я думаю, что это не salesforce.Рекомендации по проверке подлинности ASP.Net MVC 2 (логин)

Хорошо продолжать, люди советуют, чтобы аутентификация ASP.Net MVC 2 сохранялась в файле cookie на клиентской машине пользователя. Поэтому в основном я сохраняю идентификатор пользователя в cookie, а затем, если мне нужна информация о пользователе, я просто извлекаю его. В моем случае я вижу две проблемы: 1. Я часто использую информацию клиента, поэтому я не хочу каждый раз запрашивать salesforce.com. Это хорошая идея для сериализации и шифрования информации пользователя в cookie? Также информация о пользователях - это объект с двумя свойствами объекта: один содержит кучу примитивов и перечислений для описания пользователя Salesforce и другой, который содержит кучу примитивов и перечислений для описания пользователя в моем локальном приложении. 2. Мое приложение запускается из iframe, и насколько я знаю, будут проблемы с хранением файла cookie на машине пользователя. Я не уверен, что это правда. Также, когда пользователь выходит из salesforce, мой файл cookie должен быть недействительным/удаленным с компьютера пользователя.

Что я сейчас делаю, я храню всю информацию о пользователях в сеансе и без куки. Я просто не могу понять, почему это плохая идея. Я имею в виду, что я прочитал информацию о захвате сеанса и истечении сеанса.

Но с точки зрения захвата сеанса, если я шифрую и сохраняю идентификатор пользователя в файле cookie и сохраняю объект пользователя в кеше, а кто-то крадет сеанс, что кто-то тоже получает кеш и правильно ли принимает объект пользователя?

С точки зрения истечения срока действия сеанса должен быть способ позаботиться о том, что я точно не знаю, как это делается, но я знаю, что это можно сделать в ASP.Net. Скорее всего, на SQL-сервере.

Любая помощь в выяснении того, что лучше всего подходит для проверки подлинности в ASP.net MVC 2 в текущем контексте (помните, что мое приложение является iframe) было бы очень оценено.

С уважением, Кос

+0

Звучит неплохо, я думаю, что так как роль asp.net roleproviders позаботится об этом. – Sevki

ответ

0

Я не знаком с ASP.Net MVC 2, но я знаю, что Salesforce довольно хорошо, так что надеюсь, я могу предложить некоторые указатели. Я не уверен, как ASP.Net MVC 2 будет поддерживать сеанс без любых файлов cookie, поэтому я предполагаю, что на компьютере пользователя хранится хотя бы легкий кусок файла сеанса ASP-сессии, который передается сервер по каждому запросу для получения фактической информации о кэшировании пользователя и другой информации сеанса. Если это так, я бы рекомендовал, чтобы Salesforce отправил сгенерированный идентификатор дочернего сеанса SFDC в iframe, как вы это делаете, а затем сохраните его в конце сеанса ASP. Для последующих вызовов единственной вещью, которая будет передаваться назад и вперед на ваш сервер, будет легкий идентификатор сеанса ASP, который затем можно использовать для доступа к идентификатору сеанса SFDC и другой информации.

Что касается вашего требования, чтобы убить сеанс ASP, когда пользователь выходит из системы, нет отличного способа сделать это напрямую (т.нет привязки к выходу из системы), но поскольку сгенерированный идентификатор сеанса SFDC, который был передан вашему iframe, был дочерним элементом сеанса пользовательского интерфейса, должен быть недействительным, когда пользователь выходит из системы. Это означает, что ваше приложение больше не сможет получить доступ к SFDC, но если вы также захотите убить сеанс ASP, вы можете проверить сеанс ASP на каждый запрос, проверив сеанс SFDC (отправьте простой вызов API, например getServerTimestamp()), и если вы хотите быть еще более агрессивным, вы можете опросить SFDC, чтобы узнать, действительно ли сеанс действителен каждые n минут.

+0

Спасибо за ваш ответ. То, что вы описали, это именно то, что я делал, пока я не стал параноидальным, прочитав форум, который говорит, что не записывает информацию о пользователе в вашем сеансе, потому что: – user492814

+0

1. Это небезопасно и 2. сессия заканчивается в какой-то момент, поэтому я могу закончить а сеанс SalesForce все еще открыт, но сеанс .Net истек. – user492814

Смежные вопросы