好吧,所以我很难理解我的设置在这里有一个合适的流程。
目标
我希望我的SPA应用程序有一个适当的SSO流,它可以将用户身份验证到API中。
上下文
我有一个React应用程序,它打算使用一个Okta,它为SSO流提供SAML (首选)和OIDC。我已经将我的静态源封装在一个为它们服务的web服务器中,该服务器有一个中间件来检查cookie,如果不存在,我会重定向到IDP (Okta)进行登录。现在一切都很好。
目前,我的API位于同一台服务器上,我打算将它转移到一个独立的服务器上,以独立于网站进行扩展。我的API还必须允许其他机器客户端(服务)调用它,因此我实现了一个使用客户端ID和机密作为身份验证措施的服务帐户流。
通常,我的预期流如下所示:
用户导航到我的网站(未经授权),-> website,->重定向到IDP,->断言回调流,->生成JWT会话cookie,-> Web应用程序使-> ->服务器auth中间件验证cookie /承载令牌。
这个问题.
关于如何生成JWT访问令牌的详细信息是我陷入困境的地方。目前,我的not服务器接收SAML断言并生成一个JWT,这与服务帐户(bleh)的JWT声明逻辑不同。我正在考虑实现Auth服务,而不是集中令牌生成流。
对于Auth服务,我研究了OAuth2.0,它似乎正是我所需要的正确方法。尽管如此,我找不到关于SAML断言-> OAuth2.0所遵循的模式的多少信息。我看到了一个IETF草案样本2无记名赠款类型,但它似乎死在水里。对于自定义实现的OAuth2.0授予类型的普遍共识,我也不确定。
合适的流量是什么样子的?我想到了几个场景:
的OIDC而不是SAML。
发布于 2020-12-05 08:43:16
OIDC听起来是正确的选择,因为它涉及到API。与为企业SSO构建的SAML相比,OAuth旨在保护API。
您可以使用OIDC集成SPA和Okta。Okta为不同的平台提供SDK,使您更容易做到这一点。你可以在这里找到SDK‘:https://developer.okta.com/code/angular/okta_angular_auth_js/
当您在OIDC流之后从Okta获得ID令牌和访问令牌之后,您可以使用访问令牌访问外部API,您的API资源服务器或API网关可以验证访问令牌。同样,Okta提供SDK来验证访问令牌:https://developer.okta.com/code/dotnet/jwt-validation/
https://stackoverflow.com/questions/64717409
复制相似问题