场景:我们正在向预先注册的应用程序公开Web API。此API公开,但应仅适用于已注册的应用程序(客户端)。为此,我们选择了OAuth2授权,资源服务器接受来自授权服务器的承载令牌。
我们正在使用Thinktecture IdentityServer v3进行OAuth。
我们选择了OAuth2客户端凭据流,并与基于服务器的应用程序共享密钥。直到这一切都很好。现在我们有一个原生iOS移动应用程序,需要访问我们受保护的API。我们读到用javascript /移动应用程序分享秘密并不是一个好主意。
同样重要的是iOS移动应用程序有自己的身份提供程序(ADFS)。因此,在从授权服务器请求令牌之前,用户必须已经登录到iOS应用程序。
考虑到这种情况,您能否建议资源服务器如何信任这个iOS原生应用?我们想过使用隐式流程。但由于iOS移动应用程序具有自己的身份验证,授权服务器需要一种方法来确定传入请求已使用外部身份提供程序进行身份验证,并自动向iOS应用程序发出访问令牌。
当请求来自该iOS应用程序时,我们如何使授权服务器信任外部身份提供程序并发出访问令牌,而不是将用户重定向到授权服务器登录页面?
单个资源服务器是否能够接受来自多个授权服务器的令牌?如果没有,为什么?