如何将 OAuth 与 Active Directory 一起使用

信息安全 应用安全 Web应用程序 验证 活动目录 oauth
2021-09-03 02:42:35

我正在创建一个 REST WCF 服务并希望使用 OAuth 来验证每个用户的请求。用户帐户存储在 Active Directory 中,因此我可以在客户端应用程序上访问他们的 AD 登录名,并且可以将该信息与请求标头一起传递。

我之前使用过 oauth 和 FatSecret REST API,所以我熟悉身份验证的工作原理

基本上我只是不确定如何为用户分配和存储密钥,以及如何将用户的密钥与他们的 AD 登录名绑定。

我是否只有另一个数据库,其中包含用户 AD 登录名到密钥的映射表,然后在请求进入时在该表上查找密钥?

如何确保传入请求实际上来自其登录名在传入请求中的用户,难道任何人都不能打开 Fiddler 并使用另一个用户的 AD 登录名创建请求吗?

2个回答

我不确定 OAuth 为您提供了哪些无法使用其他方式完成的功能。WCF + Rest 与 WIF 中捆绑的基于声明的身份验证配合得非常好。

由于 WCF 暗示您使用的是 ASP.NET,因此我建议在服务器端使用Windows Identity Foundation (WIF)查看这本电子书了解更多信息。

接下来,您需要一种将 AD 公开给您的应用的方法。您可以使用在 Windows 2008 R2 上免费的ADFSv2 。查看可防止会话重放攻击的 SQL 安装。

从 Fiddler 复制和粘贴凭据并不是您可以完全停止的事情。HTTPS 会有所帮助,但如果您真的想调查此问题,请查看Stack Overflow 上的问答

如果您支持移动应用程序,OAuth 可能是一个不错的选择。这样,移动应用程序可以存储访问令牌,而无需在设备上携带用户密码。基本场景是应用程序从网关请求令牌,该网关提示用户输入凭据 (userid/pw),然后针对 AD 进行验证。一旦 AD 验证,网关就会向应用程序发出访问令牌(可能通过访问代码交换)。该应用程序使用令牌来请求服务。提供服务的应用程序可以检查网关以验证令牌并获取从访问令牌到用户名的映射。这样,网关会保留映射,但仅在访问令牌适用的持续时间内。