当前位置: 首页 > 知识库问答 >
问题:

C#owin实现

充星腾
2023-03-14

我正在使用owin pipeline为SAML身份验证(使用sustainsys saml库)实现SP启动的登录。我在配置的acs url上接收saml响应时遇到问题。从IDP收到saml响应,用户成功登录,但是当我试图在ACS urlendpoint读取saml响应时,该方法在调试流中从未被命中。

我相信ACSendpoint是saml响应将从idp(idp-browser和browser-acsendpoint)发送回去的地方,有人可以指出为什么在浏览器上收到saml响应但未重定向到ACS URL的问题。

已在IDP和SP端配置ACS url。我可以在Saml请求中看到正确的ACS url。

Sustainsys.Saml2.Owin.Saml2AuthenticationMiddleware Verbose: 0 : Signature validation passed for Saml Response Microsoft.IdentityModel.Tokens.Saml2.Saml2Id
Sustainsys.Saml2.Owin.Saml2AuthenticationMiddleware Verbose: 0 : Extracted SAML assertion <--Assertion_id-->
Sustainsys.Saml2.Owin.Saml2AuthenticationMiddleware Information: 0 : Successfully processed SAML response Microsoft.IdentityModel.Tokens.Saml2.Saml2Id and authenticated <--User-->
Application Insights Telemetry (unconfigured): ":,"ai.location.ip":"::1","ai.internal.sdkVersion"},"data":{"baseType":"RequestData","baseData":{"ver":2,"id":"|/WNNPHCMHVk=.56095c49_","name":"POST <--ACS URL- BASE URL-->","duration":"00:00:00.2807934","success":true,"responseCode":"303","url":"<--ACS URL-->","properties":{"DeveloperMode":"true","_MS.ProcessedByMetricExtractors":"(Name:'Requests', Ver:'1.0')"}}}}

共有2个答案

商和雅
2023-03-14

我已经将身份验证类型设置为ExternalCookie,它仍然无法通过saml响应到达我的acs url。对acs url的POST请求返回一个303状态码

启动时

app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
 AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
 CookieSecure = CookieSecureOption.Always,
 ExpireTimeSpan = TimeSpan.FromMinutes(30),
 LoginPath = new PathString("/Account/SignIn"),
 SlidingExpiration = true,
});
 app.SetDefaultSignInAsAuthenticationType(DefaultAuthenticationTypes.ExternalCookie);
 app.UseSaml2Authentication(CreateSaml2Options());

public ActionResult ExternalLogin(string provider, string rURL, string uname)
{
 return new ChallengeResult(provider, 
                            Url.Action("ExternalLoginCallback",
                            "Account"), uname);
}

ACSendpoint

[HttpPost]
public ActionResult Acs(string username, string samlResponse)
{
         ......
} 

如果有人能就此提供一些意见,那将非常有帮助。

穆毅然
2023-03-14

ACS 终结点由库实现。正如在您的日志中看到的那样,它已成功完成。

然后库使用配置的登录方案发出登录,这通常是外部cookie方案(但也可以是应用程序cookie方案)。这可能是您的代码中没有正确配置的东西。

 类似资料:
  • 我正在尝试使用OWIN外部登录到Google/Facebook。 面临的问题是owin挑战不断将响应类型从令牌更改为代码。 挑战生成以下URL:https://accounts.google.com/o/oauth2/auth?response_type=code 这将返回来自google的错误。如果我改变response_type令牌(response_type=令牌)它的工作。 下面是OAut

  • 1.6 ABP总体介绍 - 集成OWIN 1.6.1 简介 如果你在你的应用中使用了 ASP.NET MVC 和 ASP.NET Web API,那么你需要添加 Abp.Owin 包到你的项目。 1.6.2 安装 添加 Abp.Owin 包到你的主项目(一般来说是 Web 项目)。 Install-Package Abp.Owin 1.6.3 使用 在OWIN Startup 文件中调用 User

  • 从浏览器到我的自助主机OWIN WebAPI的所有预飞行请求都不会被中间件处理。如果我从邮递员提出选项请求,它们将被处理。为什么是这样的行为? 请求URL:http://localhost:9000/api/v1/conversations/create?connectionId=13509f44-eacb-4950-8cc8-71bd37098975 请求方法:选项 状态代码:401未经授权的远

  • 问题内容: 我正在.NET Web应用程序中实现Web API 2服务体系结构。使用请求的客户端是纯JavaScript,没有mvc / asp.net。我正在使用OWIN根据本文尝试启用令牌身份验证,并使用Web API Sample进行OWIN承载令牌身份验证 。授权后,我似乎在身份验证步骤中缺少某些内容。 我的登录名如下: 它返回 然后,我尝试在AngularJS中的其他请求上设置HTTP标

  • 在visual_studio中想做一个[]重载的小练习, 可是主函数部分显示 作为C++新手,请大佬们帮忙指点一二

  • 问题内容: 是否有人尝试为JVM实现C#?作为Java开发人员,我一直羡慕C#,但不愿放弃JVM的可移植性和成熟度,更不用说针对它的各种工具了。 我知道JVM和CLR之间有一些重要的区别,但是有没有什么是最流行的? 问题答案: CLR和JVM之间有很大的不同。 一些例子: Java没有用户定义的值类型 Java泛型与.NET泛型 完全 不同 C#的许多方面都依赖于框架的元素-委托等。您还需要移植库