gpt4 book ai didi

asp.net - 使用 ADFS 实现主动身份验证

转载 作者:行者123 更新时间:2023-12-02 21:04:57 25 4
gpt4 key购买 nike

我正在使用 ADFS 进行 Active Directory 身份验证。

在搜索时,我找到了几篇文章来完成此要求,但他们建议将应用程序的登录页面重定向到 ADFS 的登录页面,然后再返回。

根据用户体验,不建议重定向到 ADFS 登录页面。

任何人都可以帮助我找到在幕后使用 ADFS 通过事件目录进行身份验证的解决方案吗?因此,一切都将由应用程序代码处理,而不是由 ADFS 登录页面处理。

请指教。

如果您有任何疑虑或疑问,或者需要更多信息,请告诉我。

最佳答案

这些文章建议您重定向(使用 WS-Federation 协议(protocol))到 ADFS 登录页面的原因是它允许您设置与其他身份提供商的联合(允许外部公司的员工使用自己的凭据登录)到您的应用程序)。

您可以使用 WS-Trust 协议(protocol)来完成您想要的操作,但您将放弃(或必须自己实现)联合的可能性。

ADFS 公开了诸如 /adfs/services/trust/13/usernamemixed 之类的端点,您可以通过与这些端点通信来获取安全 token 。像下面这样的东西应该可以帮助你。

public class UserNameWSTrustBinding : WS2007HttpBinding
{
public UserNameWSTrustBinding()
{
Security.Mode = SecurityMode.TransportWithMessageCredential;
Security.Message.EstablishSecurityContext = false;
Security.Message.ClientCredentialType = MessageCredentialType.UserName;
}
}

private static SecurityToken GetSamlToken(string username, string password)
{
var factory = new WSTrustChannelFactory(new UserNameWSTrustBinding(), "https://yourdomain.com/adfs/services/trust/13/UsernameMixed")
{
TrustVersion = TrustVersion.WSTrust13
};

factory.Credentials.UserName.UserName = username;
factory.Credentials.UserName.Password = password;

var rst = new RequestSecurityToken
{
RequestType = RequestTypes.Issue,
AppliesTo = new EndpointReference("https://yourdomain.com/yourservice"),
KeyType = KeyTypes.Bearer
};

var channel = factory.CreateChannel();

return channel.Issue(rst);
}

关于asp.net - 使用 ADFS 实现主动身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35424509/

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