Microsoft graph api 调用MS Graph的守护程序应用程序的OnBehalfOfProvider的工作示例

Microsoft graph api 调用MS Graph的守护程序应用程序的OnBehalfOfProvider的工作示例,microsoft-graph-api,microsoft-identity-platform,auth0-delegated-admin,authprovider,Microsoft Graph Api,Microsoft Identity Platform,Auth0 Delegated Admin,Authprovider,我很难找到此场景的工作示例: IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder .Create(clientId) .WithRedirectUri(redirectUri) .WithClientSecret(clientSecret) .Build(); OnBehalfProvider authProvider=新的OnBehalfProv

我很难找到此场景的工作示例:

IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithRedirectUri(redirectUri)
.WithClientSecret(clientSecret)
.Build();
OnBehalfProvider authProvider=新的OnBehalfProvider(机密客户端应用程序,作用域)

我面临的问题: 1.我从哪个软件包获得OnBehalfOfProfider? 2.假设我必须获得AAD用户的访问令牌,而不需要用户的实际登录(这是一个守护程序应用程序)-我如何构建UserAssertion实例

此处的信息基于两个来源: MSDN“供应商的贝拉夫” github的《如何称呼海外建筑运营管理局》

谢谢
当您有一个接收包含用户信息的访问令牌的API,并且您希望调用另一个API作为该用户时,将使用代表流的Art。 这听起来不像你在这里的情景

这听起来更像是一种无人参与的后台访问场景。 基本上有两种选择:

  • 使用刷新令牌流
  • 使用客户端凭据流
  • 使用ROPC流
  • 第一种方法更为复杂,但推荐用于非关键流程。 MSAL确实简化了很多。 其工作方式:

  • 用户通过授权码流等方式对您的应用进行身份验证
  • MSAL将刷新令牌存储在良好的令牌缓存(数据库/Azure密钥库等)中,您需要对此进行配置
  • 您的后台处理器使用相同的令牌缓存,允许它使用刷新令牌来获取新令牌
  • 这种方法的缺点是它有点复杂,刷新令牌可能会过期,需要用户重新验证

    第二种方法更简单,但需要使用应用程序权限而不是委派权限。 有了客户端凭据,您的应用程序需要能够自己访问所有数据,而无需任何用户。 因此,这需要大量访问,并且依赖于支持此方法的API。 但它简单可靠

    第三种方法我不推荐。 它要求您使用用户的用户名和密码为用户获取令牌。
    你不仅需要存储用户的密码,如果用户启用了多因素身份验证,并且是访客用户,那么它根本不起作用。

    juunas,我的场景与你描述的场景非常接近,但不完全相同,我尝试做的是:1.用户登录到web应用程序(旧学校用户名/登录);2.我们信任我们的应用程序,我们知道用户在AAD中的比例为1:1,但我们不想要求用户提供其他登录信息。。。;3.我们需要调用没有应用程序权限的MS Graph/团队端点(发送聊天);4.我们使用我们的AAD注册应用程序创建团队、频道,并向其中添加AAD成员。。。应用内权限模式。我们被困在第三步。调用我们信任的MS Graph“代表用户”。我所描述的选项就是用于此的选项。你不能用AAD说“给我一个用户X的令牌”。