Фоноваяудостовер ASP.NET веб-приложение с WCF службы
У меня есть веб-приложение ASP.NET, который взаимодействует с WCF сервисов. Веб-приложение и службы WCF находятся под моим контролем. В веб-приложении ASP.NET используется пользовательская реализация модели поставщика членства ASP.NET (с паролями, хранящимися в хешированной форме) для аутентификации пользователей, которые входят в веб-приложение. Как веб-приложение ASP.NET, так и службы WCF имеют доступ к одной и той же базе данных членства.
Поскольку пользователи будут предоставлять свой пароль только один раз, и я не хочу хранить их пароли в любом месте или раздражать их, неоднократно прося их пополнять свой пароль, мне нужен соответствующий механизм для аутентификации пользователей с помощью Услуги WCF.
Основываясь на других вопросах и ответах, которые я видел, я рассматриваю подход типа «входа в систему», в котором пользовательский сеанс будет создан в базе данных пользовательского членства, когда пользователь первоначально войдет в веб-приложение, с сеанс входа в систему, идентифицированный GUID, и автоматически истекает после периода бездействия. GUID сеанса входа будет «запоминаться» веб-приложением для каждого зарегистрированного пользователя (либо сохраненного в Билет проверки подлинности форм, либо в сеансе).
Служба WCF также будет предоставлять свою собственную операцию входа в систему, принимая имя пользователя и пароль и возвращая GUID сеанса входа, как описано выше.
Служба WCF затем примет GUID сеанса входа для всех других операций и проверит, что GUID представляет действительный сеанс входа в систему, который еще не истек, прежде чем разрешить операцию продолжить.
Я проделал довольно много фонового чтения, и есть много материала о прямом использовании типа учетных данных клиента UserName, но для этого потребуется, чтобы веб-приложение запоминало пароль пользователя, который не мне кажется отличной идеей.
Я провел некоторое исследование и нашел материал на MSDN, но это, похоже, требует много усилий для реализации того, что (по крайней мере для меня) похоже на довольно распространенный сценарий использования.
Вопрос
Является ли общий подход "сеанс", описанный выше разумного?
Если да, то каков наилучший способ его достижения?
Если нет, можете ли вы предложить альтернативу?
Доступна ли ваша служба WCF только из внутренней сети? Если это так, я не вижу необходимости повторной проверки подлинности запросов. –
Извините за упущение - услуга WCF будет доступна в Интернете. –