是否可以使用承载令牌来认证同一台服务器上的两个webapi系统?

时间:2019-01-24 13:08:58

标签: authentication asp.net-web-api active-directory bearer-token

我们在本地域上运行的同一IIS Web服务器上配置了两个webapi应用程序(核心和支持)。我们的用户使用活动目录在核心应用程序上进行身份验证,并且核心系统返回承载令牌。然后,该令牌用于授权来自ReactJS客户端的所有API调用。除了核心应用程序,我们还提供支持Web应用程序。对该系统API端点的任何调用也都需要得到授权。

是否可以将核心应用程序发布的相同承载令牌用于支持应用程序?

我们已经配置了单独的Web服务器,数据库服务器和客户端来测试该过程。在构建并部署了两个api Web应用程序和ReactJS客户端之后,我们可以通过活动目录登录,接收承载令牌,并使用此令牌在核心和支持平台上进行身份验证。

但是,当我们将相同的文件和配置复制到客户端服务器时,在支持域上会出现401授权错误;核心域完美运行。

我们也在两种环境中都安装了SSL证书。

如果我们将支持应用程序设置为“允许CORS的所有来源”,那么它将在没有授权的情况下起作用。但是,当我们将源设置为ReactJS和Core api项目时,在支持域上会出现401错误。

我们没想到核心应用程序的令牌会授权支持应用程序。但是,这在我们的域环境中有效,我们不确定为什么。这使得它在客户环境中不起作用的原因更加令人困惑。

1 个答案:

答案 0 :(得分:0)

万一它对任何人都有帮助...之所以对我们内部起作用,是因为我们所有的Web应用程序都在同一个应用程序池中运行。这意味着他们共享相同的机器密钥,因此来自所有人的承载令牌将被授权给所有人。一旦我们将它们移到他们自己的应用程序池中,我们就可以复制与客户相同的问题(即401授权)。解决方法是将它们放在相同的应用程序池中,或将相同的机器密钥添加到应用程序的web.config文件中。