вот мои настройки:
У меня есть сайт MVC3, размещенный с поддоменом www (например, www.example.com). Мой сайт защищен с помощью SSL и аутентификации по формам при поддержке поставщиков членства / роли ASP.NET. У меня есть HTTP-обработчики, предоставляющие сервисные возможности в разделе / services (например, www.example.com/services). Они защищены с помощью обычной аутентификации по SSL. У меня есть мобильные устройства, которые успешно получают / пользуются этими услугами. Я также создал новый сайт с поддоменом API (например, api.example.com), который будет моим общедоступным API. Эти сервисы в настоящее время доступны через предварительный просмотр WCF Web API 6 (в конечном итоге, для перехода на ASP.NET Web API). Эти сервисы также защищены с помощью обычной аутентификации по SSL. Моя реализация членства в ASP.NET хранит хешированные пароли (то есть они не зашифрованы). Все сервисы обслуживают ответы JSON. Все это прекрасно работает.
Вот моя дилемма:
Я начал писать новое представление на сайте MVC и понял, что было бы здорово использовать Ajax. Мой конкретный случай заключается в реализации каскадных раскрывающихся списков. Я хотел реализовать это, используя jQuery и новый сервис в поддомене api. Сначала я думал, что это будет простое упражнение, а потом понял, что у меня нет эффективного способа вызвать свой собственный API. Все мои клиенты (мобильные устройства) хранят свои имена пользователей и пароли локально, поэтому это легко. Однако, если один и тот же пользователь вошел на мой сайт, у меня есть его имя пользователя, но не пароль, поэтому у меня нет прямого доступа к любым услугам, предлагаемым в поддомене api.
На мой взгляд, у меня есть три решения:
- Реализация сервисов, поддерживающих сайт MVC, непосредственно в URI / services, исключая использование моего собственного публичного API.
- Создайте суперпользователя в моем членском магазине (где я знаю имя пользователя / пароль), который сайт использует для доступа к службам в поддомене api.
- Измени мою стратегию аутентификации.
Мне приходит в голову, что я, вероятно, не должен использовать свой собственный публичный API, и мне лучше будет использовать мои собственные частные сервисы (что нормально, поскольку вся логика используется совместно с фасадным слоем).
Какая здесь рекомендуемая стратегия? Я также предполагаю, что если бы я использовал вариант 2 или 3, я бы сделал это, используя JSONP. Это правильно?
Любой совет будет принят с благодарностью. А если потребуется более подробная информация, пожалуйста, напишите, и я буду обновлять с ответами.
Спасибо!