gpt4 book ai didi

c# - Rails 和 ASP.NET 单点登录

转载 作者:数据小太阳 更新时间:2023-10-29 07:27:41 25 4
gpt4 key购买 nike

我有一个 ASP.NET 应用程序,它使用表单例份验证,并将凭据存储在一个表中 - 非常普通。因为我知道密码是如何散列的,我能以某种方式与 Rails 共享表单例份验证 cookie,从而有效地创建单点登录吗?这两个 Web 应用程序将位于同一个域中。

最佳答案

您可以与 Rails 共享 ASP.NET Forms Auth Cookie,但您必须在 Rails 端对其进行解密。可能是太麻烦了。

一个更简单的解决方案是跳过 .NET Forms Authentication Ticket 并在两侧保留您自己的 auth ticket (cookie),使用您想要的加密算法和两个平台之间的相同 salt。盐可以保存在数据库或物理文件中,如果它们位于同一磁盘上。

一个例子:

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.EncryptFormsAuthentication.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。双方使用相同的名称。

利润。

关于c# - Rails 和 ASP.NET 单点登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4210653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com