Angular 是否可以在Azure APIM上编写自定义代码

Angular 是否可以在Azure APIM上编写自定义代码,angular,azure,azure-api-management,msal,Angular,Azure,Azure Api Management,Msal,我使用Angular SPA和Azure广告进行身份验证。我的要求是,如果用户未通过身份验证,则应直接将其重定向到MS登录页面,而无需在浏览器上下载SPA。(因为AuthGaurd也只有在下载SPA后才能工作,SPA页面将在一段时间内可见 我想首先在APIM重定向SPA,在APIM我检查用户是否经过身份验证。如果用户没有经过身份验证,我会将ir重定向到MS登录页面 1-我可以在APIM中写这样的登录吗? 2-这种方法会影响令牌刷新的静默身份验证吗(我在客户端使用MSAL)? 3-在第一次请求时不

我使用Angular SPA和Azure广告进行身份验证。我的要求是,如果用户未通过身份验证,则应直接将其重定向到MS登录页面,而无需在浏览器上下载SPA。(因为AuthGaurd也只有在下载SPA后才能工作,SPA页面将在一段时间内可见

我想首先在APIM重定向SPA,在APIM我检查用户是否经过身份验证。如果用户没有经过身份验证,我会将ir重定向到MS登录页面

1-我可以在APIM中写这样的登录吗? 2-这种方法会影响令牌刷新的静默身份验证吗(我在客户端使用MSAL)? 3-在第一次请求时不下载SPA的情况下,还有什么最佳方法可以重定向到MS登录页面


我刚刚分析并试图找出最佳方法,但可以找到一个具体的解决方案,在不下载SPA的情况下重定向到MS登录页面。

虽然Azure API管理主要是为API设计的,但仍然可以在其背后托管您的SPA。有两个关键点需要注意

  • 使用这样的GET操作

  • 使用策略的出站块中的策略

  • 来谈谈你的其他问题

  • 是的。您可以在
    入站
    范围中使用,并在中将用户重定向到登录页面

    此外,由于此时没有加载任何JavaScript,因此必须使用一个
    重定向uri
    ,它返回到APIM并在标头中设置返回的访问令牌,然后
    验证jwt

    由于验证将成功,它现在将加载
    index.html
    ,并且在响应中,您将希望有一个
    Set Cookie
    头将访问令牌返回到浏览器,并将在其他资源(和API调用)的后续请求中自动发送

  • 类.APIM将首先返回一个令牌以获取SPA文件(也可用于API调用)但是对于MSAL客户端,您的SPA也将获取一个令牌,从而产生两个令牌

    理想情况下,Cookie中的敏感数据应该通过使用安全且仅限Http的Cookie进行保护。您可以阅读更多相关内容。
    使用此类cookie,您的JS无法访问令牌,但cookie将在所有请求中发送到同一个域,APIM可以提取该域。
    因此,您可以从应用程序中删除MSAL代码

  • 以上是实现您所需的一个合理的好方法


  • 我不确定API管理是否是这项工作的合适工具。当会话未经身份验证时,您基本上希望在某个URL上实现重定向?