У меня есть приложение ASP.NET, которое использует формы auth и сохраняет учетные данные в таблице - симпатичная ваниль. Поскольку я знаю, как пароль хэширован, могу ли я как-то разделить формы auth cookie с Rails, эффективно создавая единый вход? Оба веб-приложения будут жить в одном домене.Rails и ASP.NET Single Sign-On
ответ
Я не знаю о совместном использовании файла cookie auth - это, вероятно, будет сложно. Но обмен идентификационной информацией будет довольно простым.
Я хотел бы написать пользовательскую модель в Rails, который действует в качестве адаптера к существующей таблице идентичности, используя establish_connection
трюк:
class User < ActiveRecord::Base
establish_connection(
{ :adapter => "mysql",
:database => "db_name",
:host => "db.example.com",
:username => "user",
:password => "password" })
end
это сделает модель пользователя подключиться к другому дб. Событие лучше, вы можете добавить еще одну запись в database.yml
и загрузить ее здесь.
Затем вам просто нужно будет перегрузить функции доступа, чтобы иметь дело с нестандартной схемой.
Вы можете совместно использовать Cookie ASP.NET Forms Auth с Rails, но вам придется расшифровать его на стороне Rails. Может быть, это слишком много неприятностей.
Более простое решение пропустить .NET Forms Authentication билет и сохраняются собственный аутентификации билет (печенье) с обеих сторон, используя алгоритм шифрования вы хотите и ту же соль между этими двумя платформами. Соль может быть сохранена в базе данных или физическом файле, если они находятся на одном диске.
Пример:
C# стороне:
public class MyTicket {
...
public string ToSerializableFormat() {
return String.Format("{0}|{1}", t.Username, t.somethingElseYouNeed);
}
public static MyTicket Parse(string value) {
var vals = value.Split('|');
return MyTicket(values[0], values[1]);
}
}
Где-то в вашем приложении, заменив FormsAuthentication.Encrypt
и FormsAuthentication.Decrypt
вызовы:
string MakeTicket(MyTicket t) {
return EncryptSomehow(key, t.ToSerializableFormat());
}
MyTicket ReadTicket(string cookieValue) {
return MyTicket.Parse(DecryptSomehow(key, cookieValue));
}
И рубин эквивалент будет:
class MyTicket
def to_serializable_format
"#{@username}|#{@something_else}"
end
def self.parse(value)
values = value.split '|'
MyTicket.new(*values)
end
end
Где-то в коде Rails вы расшифруете и зашифруете файл cookie. Используйте одно и то же имя с обеих сторон.
Прибыль.
- 1. Single signon из нескольких приложений
- 2. MOODLE :: Security Single-SignOn
- 3. Kentor Auth - Single SignOn
- 4. Single SignOn - Лучшая практика
- 5. Реализация zendesk single signon
- 6. Single Signon между поставщиками услуг
- 7. Android AppWidget и приложение Single Signon
- 8. Single signon betwen Asp .Net и Sharepoint Portal
- 9. Реализация Single Signon в Windows без Azure
- 10. PHPMyAdmin Single Signon Authentication Infinite Redirect Loop
- 11. App Crash after Facebook single signon
- 12. Single-signon с унаследованной системой весной Безопасность
- 13. Реализация Single SignOn с идентификационным сервером 4
- 14. Single Signon между моим приложением Azure и SharePoint Online
- 15. Single signon, авторизация с использованием логиналитики в рубине на рельсах
- 16. Single SignOn с использованием OpenSSL на сервере Apache
- 17. Нужна помощь: Laravel single signon для разных приложений laravel
- 18. Single-signon в android с помощью Active Directory
- 19. Trac Single Signon не работает, как указано в поваренной книге
- 20. Стандартный Apache (не OHS) с mod_osso для Single Signon
- 21. Rails reset single column
- 22. ASP.NET Single Sign On
- 23. asp.net и Oracle single escape auto escape
- 24. ASP.NET MVC Single Sign-на и Роли
- 25. Facebook Connect авто-signon?
- 26. Single-SignOn-Loginpage с таймером, чтобы проверить, был ли пользователь уже подписан в
- 27. Rails-RMagick handle single image
- 28. ASP.NET Single Page Application (SPA)
- 29. asp.net application + single sign on
- 30. Single-Sign-On ASP.NET MVC
У меня создалось впечатление, что это больше работы, чем того стоит. Это то решение, на котором я бы сосредоточился. – jocull
Это в значительной степени то, что я получаю. У меня есть алгоритм хэширования паролей, реализованный как в C#, так и в Ruby. Как бы я расшифровывал файлы cookie ASP.NET с помощью cookie в Rails? Мне нужно избегать входа в систему дважды - отсюда «одиночный» вход ;-) –
Вы можете попробовать запустить Reflector (http://www.red-gate.com/products/reflector/) в разделе «FormsAuthentication» .Decrypt', чтобы увидеть, как это делает .NET. Но мое предложение состоит в том, чтобы пропустить Билет Форм-Аута вообще и написать свой собственный «билет», который вы знаете, как расшифровать с обеих сторон. Я отредактировал ответ, чтобы дать понять. –