用于SPA / WebAPI应用程序的Azure AD实现在port/HostEnv上具有两者



我正在尝试在SPA应用程序中实现Azure AD身份验证。 我在WEB API中使用了OWIN Startup.cs文件,在angularjs前端应用程序中使用了ADAL.js文件。(根据大多数教程建议(

我的应用程序没有在不同的域/端口中托管 WebAPI 和 UI。基本上,WebAPI 是在 UI 应用程序项目中引用的。(因此无需启用 CORS(。

现在,我已经在 Azure AD 上单独注册了应用程序。 即客户端应用程序 -> 回复 URL:http://localhost:90/和 WebAPI -> APPID SignOn URL: http://localhost:90/Api/V1/

我已经配置了ADAL.js并在尝试从UI访问应用程序时获取登录页面。此外,我能够检索通过 URL 重定向登录后生成的 id.token。还使用 [授权] 属性装饰了 Web API 控制器。

我在这里主要担心的是,如果我尝试使用邮递员等工具直接调用 WebAPI,我将获得访问被拒绝/未经身份验证的访问 (401(。有人可以解释一下我如何在我的本地环境中进行测试。在这种情况下?

我的示例请求是:http://localhost:93/Api/V1/User/Preference (GET( 我正在 Web api 调用中标头的身份验证属性中添加令牌。

另外一个旁注,我认为我不需要 OWIN/Startup.cs 文件来保护 WebAPI。我尝试的方法是,我通过标头获取令牌值,并使用 JwtSecurityToken 获取 AudienceID,并解析身份验证属性的内容。这种方法是否适合安全性,或者我应该坚持使用 OWIN 实现。

所有 ADAL JS 教程都在同一域和端口上托管后端 API 和 UX,无需 CORS。请参阅示例 https://azure.microsoft.com/en-us/resources/samples/active-directory-javascript-singlepageapp-dotnet-webapi/。这些示例演示你只需要一个 Azure AD 注册,因为 JS 层实际上与 Web API 完全相同。 我们确实有一些示例演示如何调用外部 API,这些示例确实需要 CORS,但仅适用于额外的 API。调用应用后端的逻辑保持不变(只需注册一个 Azure AD 应用,无需 CORS(。邮递员不提供任何弹出用户体验的机会,因此您可以遵循的一种策略是事先获得您需要的代币。 使用 OWIN 允许您集中身份验证设置;如果在控制器中添加身份验证,则需要对添加的每个新控制器重复该逻辑。此外,维护代码将更加困难,因为您可能会使用在更新程序集时需要更改代码的 API 图面,而如果您使用标准中间件设置,则不太可能发生这种情况

相关内容

最新更新