Asp.net OpenAM、OpenId、RESTAPI、内部应用程序:如何连接它们?

Asp.net OpenAM、OpenId、RESTAPI、内部应用程序:如何连接它们?,asp.net,node.js,rest,token,openam,Asp.net,Node.js,Rest,Token,Openam,我很难把这一切联系起来。部分原因是缺乏理解,部分原因是我以前没有使用过OpenAM 我正在尝试实现单点登录。球员们在这里 OpenAm 第三方专有应用程序,可使用自己的用户名/密码数据库,或针对SAML或OpenId提供商进行身份验证 一些内部应用程序是用angularjs或.net webforms编写的 用nodejs编写的内部restapi 我需要能够让用户在openam中登录/注册,然后他们不登录任何其他应用程序。我们在网络上都能看到这种情况,所以用例是很正常的,但我以前从来没有亲自实现

我很难把这一切联系起来。部分原因是缺乏理解,部分原因是我以前没有使用过OpenAM

我正在尝试实现单点登录。球员们在这里

  • OpenAm
  • 第三方专有应用程序,可使用自己的用户名/密码数据库,或针对SAML或OpenId提供商进行身份验证
  • 一些内部应用程序是用angularjs或.net webforms编写的
  • 用nodejs编写的内部restapi
  • 我需要能够让用户在openam中登录/注册,然后他们不登录任何其他应用程序。我们在网络上都能看到这种情况,所以用例是很正常的,但我以前从来没有亲自实现过

    看看我在用下图做什么

    以下是我一直在挣扎的问题:

    出于SSO目的,OpenAM似乎将经过身份验证的用户信息存储在cookie中。如果我的专有应用程序只能通过openid或saml进行身份验证,那么它如何获取并使用此cookie?它不能通过/json/*端点来使用openam API

    对于内部应用程序,我假设我可以传递cookie,并且相关方可以验证cookie的会话信息或令牌,仅此而已。这是对的,还是我看错了

    我是否可以让用户登录到OpenAm登录页面,然后使用/oauth2/*端点验证用户的请求?我可以看到这更好的工作,但我不确定这是否是应该发生的

    基本上,我觉得上个星期我脑子里乱七八糟地想弄清楚这件事。我需要一些帮助来确定这里的方向。正如我上面所说,这其中有很大一部分是新的。我已经使用令牌完成了前端->RESTAPI->数据库,但是这个SSO场景让我非常头疼


    任何帮助都将不胜感激。

    我觉得您错过了SAML SSO的“重定向”方面。我将尝试简单地解释它是如何工作的:

    第1步:

    当用户向您的一个内部应用程序发送请求时(从这里称之为Sserviceprovider,SP),SP检测到这是一个未经验证的请求,并将浏览器重定向到OpenAM服务器(从这里称之为Identitityprovider,IdP).

    第二步:

    IdP分析重定向请求并期望找到“SAML authnResponse”,这是由SP在重定向请求中添加的编码XML元数据。它发现您的SP想要对用户进行身份验证。IdP将通过显示登录页面来响应请求。在此,用户可以向IdP进行身份验证。用户成功通过IdP的身份验证后,它会将用户重定向回SP,向请求添加“SAML authnResponse”

    第三步:

    SP将分析这个“SAML authnResponse”,它同样只是XML元数据的一种形式。如果签名验证正常,则找出成功通过身份验证的用户,为其创建会话,并将其重定向到最初尝试访问的资源

    备注1:

    步骤2中,如果用户之前已经通过IdP的身份验证,则他将有一个到IdP的活动会话。IdP将不要求他再次登录,而是立即使用有效的“SAML authnResponse”将他重定向回SP。这样,用户几乎不会注意到所有这些重定向,看起来他“无缝”访问了SP

    备注2:

    所以不要太担心Cookie,IdP使用Cookie来识别已经通过身份验证的用户会话等。但是您应该只关心重定向和分析SAML响应和请求。这有意义吗

    备注3:


    用户的浏览器(GET 302或JS POST)的重定向方式取决于您选择的“SAML配置文件”。

    Karsten,您能看一下吗?我认为这是一个类似的问题,您可能对此有所了解。谢谢你解释行话。