【问题标题】:SP Initiated - POST a SAML Request to Azure via code (C#)?SP 发起 - 通过代码 (C#) 向 Azure 发布 SAML 请求?
【发布时间】:2016-01-08 15:20:44
【问题描述】:

到目前为止我所做的...我已经设置了 Azure AD,分配了用户,甚至为不同的 Microsoft 示例应用程序设置了端点和设置。它们都是开箱即用的。我只是没有看到任何通过代码 (C#) 直接向 Azure 发送原始 SAML 请求/响应的示例。

是否可以通过代码 (C#) 向 Azure 发布 SAML 请求并让它返回 SAML 响应?基本上,我们的安全架构师想要手动创建一个 SAML AuthRequest 并将其发送到 Azure,然后接收 SAML 响应供我们询问。它甚至可以这样工作吗?

我们希望接受这一点,然后为角色和权限设置安全性。看起来该信息是身份提供者的东西,这就是我们应该使用 Azure 的目的。

我的想法: 我们有自己的 EnterpriseSecurity,可与 FederatedServer 配合使用。有一个包含 FetchTokenSSOFederated() 的 FetchToken 类。我觉得如果我们在联合服务器和 Azure 之间建立信任,那么 SP 发起的调用实际上是 FetchTokenSSOAzureFederated()。我们的联合服务器将处理我们和 Azure 之间的一切。 任何指导表示赞赏。

感谢任何指导。

谢谢 -肯

【问题讨论】:

  • 您想在这个 SAML 请求中发送什么来获取令牌?一对用户名/密码?还要别的吗?身份提供者不会免费给你令牌。

标签: c# azure single-sign-on azure-active-directory


【解决方案1】:

您绝对可以使用任何开发堆栈和您选择的任何操作系统来生成请求和解析响应 - Azure AD 甚至都不知道,唯一重要的是线路上发生了什么。 那就是说。 Azure AD 主要将 SAML 用于 SSO 目的,这意味着与其交互的习惯方式是通过 Web 库,它 1) 自动处理请求生成和响应解析,作为实现 SSO 流的一部分,以及 2) 期望用户通过浏览器。 从您的问题中不清楚您的目标是什么拓扑/场景,但是我得到的印象是您想要以编程方式处理令牌获取(即,从某种活动的客户端)。因为 Azure AD 利用 OAuth2 和 OpenId Connect,这些协议比浏览器绑定的 SAML 更适合此类用例。这就是为什么我们有大量示例显示 OAuth2/OpenId Connect 编程交互(请参阅http://aka.ms/aaddev)而没有 SAML 示例的原因。 HTH!

【讨论】:

  • 您确定他们支持密码 OAuth2 流程,即您在没有被动浏览器交互的情况下提供用户名/密码的流程吗?他们从来没有这样做过,我会对他们这样做感到惊讶 - 因为被动登录可能涉及两个因素身份验证,所以在主动场景中没有真正的方法。
  • 鉴于我是“他们”中的一员,是的,我绝对确定 :) 我们一直支持资源所有者赠款一段时间,尽管有限制,并且出于您暗示的原因不推荐它。请参阅cloudidentity.com/blog/2014/07/08/… 的详细信息。对于活动场景,我们的库会弹出浏览器对话框来处理 MFA、同意和联合退回 - 但这是另一回事。
  • 很高兴知道,也很高兴得知这是您的 SO 帐户 :) 我对您在身份领域所做的所有工作深表敬意。
  • 感谢 vibronet!我将开始查看“Native Application to Web API”示例。您会推荐任何其他特定示例吗?
猜你喜欢
  • 2016-12-28
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 2013-01-15
  • 1970-01-01
相关资源
最近更新 更多