我有一个.NET Core应用程序,该应用程序由Web前端组成,该Web前端在React JS中编写为单页应用程序,并由.NET Core API服务应用程序支持以提供其数据。它们作为独立的应用程序部署在IIS中,因此URL就是这样。
https://example.com/FooBar
https://example.com/FooBarAPI
我的任务是将FooBar网站与使用SAML并针对ADFS进行身份验证的公司SSO集成在一起。他们为我提供了来自ADFS的元数据xml文件,据我所知,该元数据包含我需要放入web.config中才能运行的所有详细信息。我在stackoverflow上找到了一些很好的例子,可以保护FooBar网站免受未经授权的访问并与SSO一起使用。
但是JavaScript需要调用的API应用程序呢?那个难题如何解决? API如何知道JS客户端是同一应用程序/用户的一部分,并且已通过身份验证以请求数据?
答案 0 :(得分:3)
API如何知道JS客户端是同一应用程序/用户的一部分,并且已通过身份验证以请求数据?
Client registration标识JS客户端。隐式流及其结果id_token
标识最终用户。
这些是非常高级的步骤:
id_token
。id_token
调用您的API。This documentation似乎可以很好地匹配您的用例,并提供了高层次的概述:
...当用户登录时,JavaScript前端使用针对JavaScript的Active Directory身份验证库(ADAL.JS)和隐式授权授予,以从Azure AD获得ID令牌(id_token)。令牌被缓存,客户端在调用其Web API后端时将其作为承载令牌附加到请求,该令牌使用OWIN中间件进行保护。
如果我不满意,我首先会让the demo application from that documentation与我的ADFS租户一起工作。然后,我将其设置转换为我的React / ASP.NET Core应用程序。