首页 文章

ADFS使用ASP.NET Core Web应用程序和.NET Core API进行单点登录

提问于
浏览
2

我有一个.NET核心应用程序,它包含一个在React JS中作为单页面应用程序编写的Web前端,并由.NET Core API服务应用程序提供支持以提供它的数据 . 它们在IIS中作为单独的应用程序部署,因此URL就像这样 .

https://example.com/FooBar
https://example.com/FooBarAPI

我的任务是将FooBar站点与我们的企业SSO集成,后者使用SAML并对ADFS进行身份验证 . 他们为我提供了一个来自ADFS的元数据xml文件,根据我的理解,这个元数据包含了我需要放入web.config以使其工作的所有细节 . 我在stackoverflow上找到了一些很好的例子,可以保护FooBar站点免受未经授权的访问和使用SSO .

但是javascript需要调用的API应用程序怎么样?这件拼图如何适合? API如何知道JS客户端是同一个应用程序/用户的一部分,并且它们经过身份验证以提出数据请求?

1 回答

  • 2

    API如何知道JS客户端是同一个应用程序/用户的一部分,并且它们经过身份验证以提出数据请求?

    Client registration标识JS客户端 . 隐式流及其结果 id_token 标识最终用户 .

    这些是非常高级的步骤:

    • 注册JS客户端(公共客户端) .

    • 从JS客户端,使用ADFS隐式流来获取最终用户 id_token .

    • 从JS客户端,使用 id_token 调用您的API .

    This documentation似乎与您的用例相当匹配,并提供了高级概述:

    ...当用户登录时,JavaScript前端使用Active Directory身份验证库(ADAL.JS)和隐式授权授权从Azure AD获取ID令牌(id_token) . 令牌被缓存,并且客户端在调用其Web API后端时将其作为承载令牌附加到请求,该后端使用OWIN中间件进行保护 .

    enter image description here

    如果我在你的鞋子里,我会首先让我的ADFS租户使用the demo application from that documentation . 然后,我会将其设置转换为我的React / ASP.NET Core应用程序 .

相关问题