我们在企业部署中使用OIDC和IdentityServer,目前我们控制所有内容(OP,客户端,资源,用户)。
我们有一个SPA客户端连接到其自己的" API并将通过它来完成它需要做的一切。然而,它们来自两个不同的领域。 (让我们说应用程序在" my.apps / app"以及" my.apis / api"中的API上运行。
在我们当前的设置中,我们使用Implicit Flow让用户在SPA中进行身份验证,然后调用API并验证其中的令牌。这非常有效。 我们将API视为"资源"即使我们不需要,我们也不要求用户同意。
如上所述,SPA需要通过API来完成它所做的一切,这还包括在身份验证时增加用户属性,因此客户端甚至不会真正让用户使用它而无需通过API。< / p>
鉴于这种情况,我们的想法是我们甚至可以使用授权代码流进行OIDC身份验证(将API视为后端)并获得安全性和效益#34;浏览器永远不能访问令牌。
但是,由于应用程序是单独托管的,我们认为这需要我们:
在SPA中启动身份验证请求,获取片段中的授权代码,但稍后将其传递给API,后者将依次请求令牌并将其置于cookie或其他内容中。
在SPA中启动身份验证请求,但使用redirect_uri到API域,从而向其提供授权代码,该代理将请求令牌,让它们存在于cookie中,然后再次重定向到SPA。
基本上我们想知道这是否是您认为可行的设置,有什么安全问题,以及是否建议我们继续使用或继续使用隐式流(特别是来自安全立场)。