Microsoft graph api 为前端带有SPA的web应用程序选择身份验证流

Microsoft graph api 为前端带有SPA的web应用程序选择身份验证流,microsoft-graph-api,msal,msal.js,Microsoft Graph Api,Msal,Msal.js,我正在开发一个使用MicrosoftGraph的应用程序。它曾经是一个使用Razor页面的ASP.NET框架web应用程序,但几乎完全被转换为一个带有ASP.NET后端的角度SPA。目前,我们在后端使用授权代码流来登录用户。Web API已启用会话,因此客户端只需使用与以前Razor应用程序相同的cookie即可。 但最近我们越来越多地考虑直接在客户端上执行一些图形请求,现在我正在寻找一种适当的方法来重构我们的身份验证,以更好地满足以下要求: 用户登录并在服务器上处理此操作,以便服务器可以使用委

我正在开发一个使用MicrosoftGraph的应用程序。它曾经是一个使用Razor页面的ASP.NET框架web应用程序,但几乎完全被转换为一个带有ASP.NET后端的角度SPA。目前,我们在后端使用授权代码流来登录用户。Web API已启用会话,因此客户端只需使用与以前Razor应用程序相同的cookie即可。 但最近我们越来越多地考虑直接在客户端上执行一些图形请求,现在我正在寻找一种适当的方法来重构我们的身份验证,以更好地满足以下要求:

  • 用户登录并在服务器上处理此操作,以便服务器可以使用委派的图形权限和调用图API
  • 为客户端提供一种不使用服务器直接调用图形的方法
  • 遵守当前在客户机上执行#2的最佳实践
  • 当我们在IFRAME中时,使用禁用的第三方Cookie(我们的应用程序可以显示并与SharePoint online以及广告登录一起使用)
  • 我不确定共享服务器访问图形所获得的访问令牌的最佳方式是什么,或者从安全角度看是否可行。我是否应该先使用服务器登录,然后使用MSAL.js并使用登录提示再次登录(希望没有用户输入两次凭据)?如果您有任何意见,我们将不胜感激

    我是否应该先使用服务器登录,然后使用MSAL.js并使用登录提示再次登录(希望没有用户输入两次凭据)


    是的,这是我们推荐的方法。您可以使用MSAL.js
    ssointer
    尝试使用现有会话中的
    login\u提示(或
    sid
    )对用户客户端进行静默身份验证。

    谢谢您的快速回答!当我在web部件的IFRAME(sharepoint online)中显示我的应用程序时,我的应用程序在禁用第三方cookie的情况下停止工作,因此我想我需要使用弹出窗口。但是,msal中的loginPopup仅适用于SPA,因此重定向必须由客户端处理,我需要在服务器上处理。我喜欢MS Teams SDK的功能,它允许打开带有我选择的URL的弹出窗口,但不幸的是,此库仅在有可用的团队上下文时才起作用。我真的不想为所有浏览器重新实现一个bicycle和程序弹出窗口…好的,当3p cookies被禁用时,ssoSilent将不起作用。在使用ssoSilent(和acquireTokenSilent)时,如果返回了需要交互/登录/同意的错误,则应该始终具有调用交互方法的错误处理逻辑。当你的应用程序在iframe中时,重定向将不起作用,因此你需要使用弹出窗口。我们正在寻找缓解这种情况的方法,但现在,你需要执行交互。