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 的令牌是正确的,它应该如何工作。
我正在编写一个使用 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 的令牌是正确的,它应该如何工作。