Oauth2 身份验证令牌包含 Azure 应用程序 ID 的 OID 而不是用户 ID

Oauth2 Authentication Token contains OID of Azure Application ID rather than User ID

我正在编写一个使用 Oatuh2 实现 SSO 的应用程序。 Azure AD 是 IDP。

向 Azure AD 令牌端点提交 post 请求后,收到的令牌包含 Azure AD 应用程序 ID 而不是用户 ID。 Post https://login.microsoftonline.com/{tenant id}/oauth2/v2.0/token

post请求内容如下:

headers = {'Content-Type': 'application/x-www-form-urlencoded', 'Accept-Charset': 'UTF-8'}
    data = {"grant_type": "client_credentials",
            "client_id": self.client_id,
            "client_secret": '****',
            "redirect_uri": 'https://login.microsoftonline.com/common/oauth2/nativeclient',
            "code": self.code,
            "scope": 'api://{applicationID}/.default openid email'
            }

我假设端点被正确使用,或者 post 请求中使用的 ID 不正确,但它们对我来说都是正确的。

您正在使用客户端凭据授权类型,该类型用于识别应用程序而非用户。您应该使用 authorization_code 授权类型来交换用户令牌的代码。

使用客户端凭据,您获得带有应用程序 ID 的令牌是正确的,它应该如何工作。