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

实现向IdP发送SP请求的按钮的最佳方式?

丌官嘉勋
2023-03-14

因此,我将在开头说SAML(以及用户认证)不是我的强项,所以我为任何误用的术语道歉。

背景:

我们目前有一个ASP。Net框架网站,使用.Net版本4.7.2(特别是webforms)。我们的网站充当服务提供商(SP),目前使用SAML 2.0和不推荐的身份提供商(IdP);幸运的是,这个身份提供者正被Okta取代。最初的IdP提供了他们自己的实现说明,使用了OWIN中间件和他们自己的NuGet包,为我们配置了SAML。不过,对于Okta,我发现我们需要使用不同的NuGet软件包。我已经开始使用SustainSys配置SAML。Saml2打包并对web进行了建议的更改。配置(这是我们对使用OWIN中间件的偏好,尽管我对此持开放态度,如果有具体原因的话)。为了进一步参考,这里是我参考的sustainsys文档。

当前问题:

网络。配置修改和其他更改(如安装NuGets)已完成,网站已清理干净,以免造成任何错误。然而,我最大的问题是,现在如何将这一切联系起来。我知道我们的网站(SP)需要向Okta(IdP)请求SAML断言。不幸的是,我不明白我需要为那个请求发送什么。我在想,只需一个指向IdP SSO链接的超链接就可以了,但从我读到的有关SAML的内容来看,需要一些与该请求相关的元数据。有人能建议如何创建一个按钮来发送必要的元数据吗?或者澄清是否需要包括这些内容(也许我误解了需要发送的内容)?此外,与sustainsys相关的任何附加链接或帮助(具体而言,html或其他显示元素)都将非常有益。

谢谢

共有2个答案

易弘阔
2023-03-14

我试图创建一个示例Web表单项目,并使用Susys Saml2 Owin中间件连接到Okta。下面的代码只是一个 POC,它从 Webform 应用程序的登录页面重定向到 OKTA 登录页面,并将响应返回到 OKTA 中配置的“单一登录 URL”。该代码可能不具有所有必要的安全层。(安全戳,验证间隔)

Login.aspx.cs

如果有多个外部登录提供程序,则相应地处理代码。

public partial class Login : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {

        IAuthenticationManager AuthenticationManager = HttpContext.Current.GetOwinContext().Authentication;

        var loginProvider = AuthenticationManager.GetExternalAuthenticationTypes()                         
                                                 .FirstOrDefault();

        AuthenticationManager.Challenge(loginProvider.AuthenticationType);
    }
}

启动。授权证书

public class Startup
{
    public void Configuration(IAppBuilder app)
    {         
        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
        });
        app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
        app.UseSaml2Authentication(new Saml2AuthenticationOptions(true));      
    }       
}

LoginCallback.cs

同样不完全确定登录回拨中有哪些代码。但我刚刚检查了用户是否已通过身份验证。

public partial class LoginCallback : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        IAuthenticationManager AuthenticationManager = HttpContext.Current.GetOwinContext().Authentication;

        bool isAuthenticated = AuthenticationManager.User.Identity.IsAuthenticated;                   
    }
}
司空坚
2023-03-14

要让Sustainsys.Saml2库启动身份验证过程,您应该使用Owin身份验证基础架构来发起挑战。这是一个通用的Owin身份验证概念,这就是Sustainsys.Saml2库中没有记录它的原因。

请参见https://docs . Microsoft . com/en-us/previous-versions/aspnet/dn 343601(v = vs . 113)

 类似资料:
  • 我一直在POCing IDP发起的SAML,我不能上班的最后一部分是全局注销。当用户从 IdP 转到 SP(一切正常)然后选择全局注销时,正在生成 LogoutRequest 并且正在重定向浏览器,但标头中的 sesisonid 不是 IdPsession 标识符 - 我该如何使 IdP 会话无效?

  • 使用 Qt 框架实现切换按钮的最佳方法是什么? 编辑: 我知道的唯一可能性是。根据Qt文档,允许具有开/关行为。如何使其如下所示?知道我使用 Qt 5.1.1

  • 我正在使用SAML 2.0和浏览器SSO配置SP以连接到另一个IDP。我已经完成了所有的设置,但无法弄清楚如何或是否有可能向IDP发送断言。IDP通常不会将断言发送回SP吗?当我导航到IDP的ACS URL时,我无法访问登录页面,因为我错过了这些SAML断言。 我的特定用例是通过平联邦设置的。 谢谢!

  • 本文向大家介绍在WinForm中发送HTTP请求的实现方法,包括了在WinForm中发送HTTP请求的实现方法的使用技巧和注意事项,需要的朋友参考一下 如何在WinForm中请求发送HTTP 手工发送HTTP请求主要是调用 System.Net的HttpWebResponse方法 手工发送HTTP的GET请求: 手工发送HTTP的POST请求 以上这篇在WinForm中发送HTTP请求的实现方法就

  • 本文向大家介绍python 实现Requests发送带cookies的请求,包括了python 实现Requests发送带cookies的请求的使用技巧和注意事项,需要的朋友参考一下 一、缘 起 最近学习【悠悠课堂】的接口自动化教程,文中提到Requests发送带cookies请求的方法,笔者随之也将其用于手头实际项目中,大致如下 二、背 景 实际需求是监控平台侧下发消息有无异常,如有异常便触发报

  • 所以我实际上已经阅读了关于这个的stackoverflow问题,但是它们对于使用最新版本的wordpress来说有点太老了。 我的最终目标是提交我的表单中的一些数据到数据库,但现在ajax响应对我不起作用。在WP中的自定义页面加载中,将加载所有代码,以便所有函数都应正常工作。所有这些都在PHP文件中,为什么使用echo来创建JS脚本。这是我代码的重要部分 使用WP的当前版本,所以变量ajaxurl