Я создаю приложение, где требования кажутся стандартными (по крайней мере, для меня)... У меня есть Web.UI, основанный на asp .net mvc и клиентах от iphone, andriod и blackberry.
Поэтому разумнее всего перенести всю мою бизнес-логику на уровень сервисов, к которому можно получить доступ через http. Этот уровень сервисов должен принимать запросы с пользовательским контекстом (идентификацией) и каким-то приятным образом последовательно выполнять авторизацию, независимо от того, какой тип клиента с ним общается (надеюсь?).
Более года подряд я выступал на трехмесячном концерте, в котором работал W.I.F. (Windows Identity Foundation) в гибридной локальной и облачной архитектуре. Мне понравилось. Три вещи, которые вызвали отклик: (1) экстернализация аутентификации без учета того, как это делается, (2) удаление логики авторизации из бизнес-логики, (3) авторизация на основе утверждений.
За последний год я слышал и смотрел все о Rest Services, «новом крутом хипповском способе ведения дел». Так что я, хотя большой, давайте попробуем это. После того, как я начал играть и писать код, я начал сильно запутываться (и впоследствии читал около 10 часов вчера, не написав ни одной строки на С#). Я все еще запутался во всей болтовне SOAP против REST, WS.* против Http, SAML против SWT. Я действительно не хочу, чтобы эта ветка была об этом, потому что в stackoverflow достаточно разговоров об этом, но я чувствую, что у меня есть выбор между двумя лагерями, когда на самом деле не кажется, что я хочу один или другой но биты от каждого?
Мне кажется, что 3 пункта, которые я упомянул выше о WIF, не кажутся концепциями, которые следует привязывать к WS.* ? Но я чувствую, что они, или, по крайней мере, то, как WIF приходит в данный момент, делает их без какой-либо экспертной настройки (например, я наткнулся на этот пост, написанный всего несколько дней назад - http://zamd.net/2011/02/08/using-simple-web-token-swt-with-wif/).
Другие области, о которых я мало знаю, это мои клиенты (iphone, andriod, blackberry), способные играть с WIF, это та же STS, которая выдает им токен SAML, и они ведут себя так же, как браузер, и передают его обратно в заголовке, как и любой другой клиент? Да, мне придется это выяснить, но если это нарушит договор с W.I.F., и я узнаю об этом сразу после публикации, то, по крайней мере, я смогу отвлечься от этого.
Наконец, чтобы добавить еще одну вещь в микс. Я действительно не хочу думать ни о чем из этого. Я хочу использовать стороннего поставщика услуг аутентификации/идентификации — http://www.janrain.com/products/engage - который, как мне кажется, использует OpenID. Может ли это вписаться в W.I.F. или я просто создаю новый токен SAML из OpenID и с этого момента использую WIF.
Думаю, в конце этой болтовни я хочу вернуться к тому, с чего начал, потому что чем больше вопросов я задаю и чем больше вариантов рассматриваю, тем все сложнее и сложнее.
Является ли наличие уровня служб (на WCF), который взаимодействует с разными клиентами, отличными от .net, для которых требуется контекст удостоверения и авторизация, настолько странный? Если вы построили что-то подобное, как вы подошли к этому?