gpt4 book ai didi

c# - 如何将多个端点添加到 adfs

转载 作者:行者123 更新时间:2023-11-30 15:25:05 25 4
gpt4 key购买 nike

我在同一个 Web 服务器上有很多 Web 应用程序 (II7):比方说 mydomain/app1,mydomain/app2,...等等。我正在尝试通过 OWIN 添加 ADFS 身份验证。这是我所做的:

[assembly: OwinStartup(typeof(MyNamespace.Startup))]
namespace MyNamespace
{
public class Startup
{
private static string realm = ConfigurationManager.AppSettings["ida:Wtrealm"];
private static string adfsMetadata = ConfigurationManager.AppSettings["ida:ADFSMetadata"];

public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);

app.Use((context, next) =>
{
SignIn(context);
return next.Invoke();
});
app.UseStageMarker(PipelineStage.Authenticate);
}

public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

app.UseCookieAuthentication(new CookieAuthenticationOptions());

app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Wtrealm = realm,
MetadataAddress = adfsMetadata
});
}

public void SignIn(IOwinContext context)
{
if (context.Authentication.User == null)
{
context.Authentication.Challenge(
WsFederationAuthenticationDefaults.AuthenticationType);
}
}
}
}

当用户访问mydomain/app1时,我想让他通过ADFS认证,然后重定向到mydomain/app1。对于访问 mydomain/app2 的用户也是如此。

但我希望在 ADFS 中只添加一个依赖方信任(因为有很多应用程序并且都使用相同的声明规则)。

我尝试了不同的配置,但我不能做我想做的事:

  • 如果 RP 端点是 mydomain/app1/,身份验证是可以的,但是所有请求(甚至来自 mydomain/app2 的请求都被重定向到 app1),显然

  • 如果 RP 端点仅为 mydomain/,我会收到 405.0 http 错误 - 重定向后不允许使用方法(我会处理尾部斜杠)。

有关信息,我在 stackoverflow 上看到了这个问题: URL redirection from ADFS server

但它并没有真正回答我的问题,因为我不理解 Andrew Lavers 评论中的句子“(...) WIF 将处理 URL_1 处的响应,然后负责将用户重定向到 URL_2”。

如何将多个端点添加到一个 RP 信任?或者如何将用户重定向到原始 URL? (考虑到所有应用程序都在同一个域中)。

在此先感谢您的帮助。

最佳答案

您应该能够根据触发身份验证流程的应用程序设置 wreply 参数。像这样:

app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
Wtrealm = realm,
MetadataAddress = adfsMetadata,
Notifications = new WsFederationAuthenticationNotifications
{
RedirectToIdentityProvider = context =>
{
context.ProtocolMessage.Wreply = <construct reply URL from context.Request>;
return Task.FromResult(0);
}
}
});

关于c# - 如何将多个端点添加到 adfs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31860582/

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