我需要在我的应用程序(C#)中获取Azure令牌以对用户执行Graph API操作,但是在调用应用程序时(app必须完全自动化,在计时器作业中工作)没有sign in
所以我有一个问题如何使令牌获取过程完全自动化(没有用户)?
我发现的关于这个主题的所有内容: Get access without a user 但我没能重新创造它。
答案 0 :(得分:1)
您描述的OAuth2流程称为"客户端凭据授权"并详细描述了here。
简而言之,在这种情况下它是相关的,并且这样工作:
首先,守护程序应用程序无法进行用户交互, 这要求应用程序具有自己的身份。一个例子 守护程序应用程序是批处理作业或操作系统服务 在后台运行。此类应用程序请求访问 令牌使用其应用程序标识并显示其应用程序 ID,凭证(密码或证书)和应用程序ID URI Azure AD。身份验证成功后,守护程序会收到一个 从Azure AD访问令牌,然后用于调用Web API。
查看this实现,了解它是如何在代码中完成的。
答案 1 :(得分:1)
使用OAuth On-Behalf-Of完全符合您的描述。哪种On-Behalf-Of方法,没有用户交互来获得用户对访问下游API(例如Graph API)的同意。换句话说,用户身份&权限在完整的请求链中以静默方式委派。在实际的企业环境中,您的应用程序通常由另一个身份提供程序(例如Active Directory)而不是Azure AD进行身份验证,然后Azure AD会请求授予Azure AD OAuth端点的权限。
请求访问令牌时,必须将其类型设置为requested_token_use=on_behalf_of
以下是使用OAuth On-Behalf-Of https://docs.microsoft.com/en-us/outlook/add-ins/authenticate-a-user-with-an-sso-token
进行SSO身份验证的参考