使用上游IdP

时间:2018-01-10 16:38:14

标签: oauth-2.0 azure-active-directory saml identityserver3 ws-federation

让我说我有自己的IdP,使用IdentityServer3,但对于一些客户,我需要将身份验证委托给另一个IdP,以便他们可以使用他们的主要AD凭据。同时,我不想使用其他IdP作为我的应用程序的直接权限,因为我需要保留登录过程中内置的某些工作流程。解决方案似乎是在我的IdP的后端使用其他IdP作为上游IdP。

                  /--> My AD
                 /---> IdentityServer3 --SAML----> Okta -----> Customer AD
Client --> API ------> IdentityServer3 --WS-Fed--> AzureAD <-> Customer AD
  \-------------/

在我的IdP的前端我使用(其中包括)OAuth2和Auth Code流程。我要求能够支持长期刷新令牌(月)。在登录期间,如果用户键入属于另一个IdP的域,则他们将被重定向到相应的登录页面(例如,在Microsoft)。当我从上游IdP收到成功的身份验证票证时,我会从我的IdP向客户端发出新令牌。当访问令牌到期时,只要刷新令牌良好,客户端就可以返回新的令牌。

问题是:如果在刷新令牌到期之前在客户AD(员工解雇?)中停用/删除了用户该怎么办?我不应该向他们发放新的访问令牌。当我没有使用上游IdP时,我只需检查AD记录即可。当我有一个上游IdP或其他一些对这些要求更有意义的认证设置时,我能做些什么吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

问题是身份提供商只允许/拒绝身份验证。如果他们否认,他们没有提供安全理由。

如果可能的话,最好的方法是访问外部各方的存储库。

您可以使用OAuth资源所有者密码流(尽管不是很安全)。在此处,您可以在消息中包含用户名和密码。如果成功,续订。如果没有,请不要。