Вы можете поделиться файлом cookie аутентификации ASP.NET Forms с Rails, но вам придется расшифровать его на стороне Rails.Возможно, это слишком много проблем.
Более простое решение - пропустить билет аутентификации .NET Forms и сохранить свой собственный билет авторизации (cookie) с обеих сторон, используя нужный алгоритм шифрования ита же соль среди двух платформ.Соль может быть сохранена в базе данных или физическом файле, если они находятся на одном диске.
Пример:
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) );
}
И Ruby-эквивалент будет:
class MyTicket
def to_serializable_format
"#{@username}|#{@something_else}"
end
def self.parse(value)
values = value.split '|'
MyTicket.new(*values)
end
end
Где-то в вашем коде Rails вы будете расшифровыватьи зашифровать файл cookie аутентификации.Используйте одинаковое имя с обеих сторон.
Прибыль.