我正在努力了解如何在Web API 2的OWIN管道中实现以下功能。
我正在构建一个允许用户使用Facebook,Twitter,LinkedIn等多个第三方身份提供商登录的应用程序。但是,我希望执行身份验证步骤完全是客户端< / strong>即可。例如,Facebook为开发人员提供了一个标记和JavaScript的片段,在浏览器中执行身份验证,从而产生了一个Facebook访问令牌 - 所有这些都没有调用我的API。
Visual Studio 2013附带的Web API模板似乎都假设API本身负责身份验证流程。我已经成功地使用了这种身份验证方式,但在我看来,执行此工作并不是API的责任。
以下是我一直试图实施的方法(到目前为止未成功):
/authenticate/facebook
等接受相应访问令牌的端点,并返回带有&#34;解码的JWT&#34;声明访问令牌是否有效。无论第三方身份提供商如何,此JWT都会有类似的声明。对于Facebook,我认为这涉及到对Graph API的/me
端点的调用。Authorize
标头中发送JWT 我的问题:
答案 0 :(得分:0)
我现在已经知道了这一点。我相信经过大量研究后,我的架构选择是正确的,特别是所谓的“断言流程”。我正在使用Thinktecture的Identity Server 3项目充当我的STS。我正在使用ICustomGrantValidator
的自定义实现来执行Facebook访问令牌的验证并转换为声明。