AZURE AD ADAL "error":"invalid_grant","error_description":"AADSTS70000: 传输数据解析器失败: 授权码格式错误或无效
AZURE AD ADAL "error":"invalid_grant","error_description":"AADSTS70000: Transmission data parser failure: Authorization Code is malformed or invalid
我正在尝试使用 AZURE AD 进行身份验证。我从 git [https://github.com/Azure-Samples/active-directory-java-webapp-openidconnect][1].
中获取了 java 客户端代码
我可以进行授权调用并获得授权码。通过使用 oauth2 jar 中的 acquireTokenByAuthorizationCode 方法传递授权代码以获取访问令牌。在这里,我收到以下错误。
"error":"invalid_grant","error_description":"AADSTS70000: Transmission data parser failure: Authorization Code is malformed or invalid.
如何将 grant_type=authorization_code 传递给 acquireTokenByAuthorizationCode 方法?
如何查看被触发的 post 请求?我在 chrome?
的网络部分看不到它
代码如下:
String authCode = authorizationCode.getValue();
ClientCredential credential = new ClientCredential(clientId,
clientSecret);
AuthenticationContext context;
AuthenticationResult result = null;
ExecutorService service = null;
try {
ThreadFactory factory = ThreadManager.currentRequestThreadFactory();
service = Executors.newCachedThreadPool(factory);
context = new AuthenticationContext(authority + tenant + "/", true,
service);
Future<AuthenticationResult> future = context
.acquireTokenByAuthorizationCode(authCode, new URI(
currentUri), credential, null);
post 请求应该是:
字符串 redirectUrl = 权限
+ this.tenant
+ "/oauth2/v2.0/token?p=b2c_1_abcd&grant_type=authorization_code&resource=https% 3a%2f%2fgraph.windows.net&redirect_uri="
+ URLEncoder.encode(REDIRECT_URL, "UTF-8");
不确定如何提供粗体信息。
在获得更多信息后进行编辑
如果您使用的是 v2 终结点,则无法使用 ADAL。
如果您已在 v2 开发门户中注册您的应用,则需要通过 Azure 门户的 Azure AD 界面注册您的应用。然后确保您的 Azure AD URL 不包含 v2.0。
要获取带有授权码的令牌,请使用 acquireTokenByAuthorizationCode
(https://github.com/Azure-Samples/active-directory-java-webapp-openidconnect/blob/master/src/main/java/com/microsoft/aad/adal4jsample/BasicFilter.java#L268-L270):
Future<AuthenticationResult> future = context
.acquireTokenByAuthorizationCode(authCode, new URI(
currentUri), credential, null);
您不会在 Chrome 中看到请求,因为它是从您的 Web 服务器发送到 Azure AD。浏览器不是链的一部分。 这是一件好事,因为我们将客户端机密传递给 Azure AD。您可以使用 Fiddler 等工具来监控流量。
我正在尝试使用 AZURE AD 进行身份验证。我从 git [https://github.com/Azure-Samples/active-directory-java-webapp-openidconnect][1].
中获取了 java 客户端代码我可以进行授权调用并获得授权码。通过使用 oauth2 jar 中的 acquireTokenByAuthorizationCode 方法传递授权代码以获取访问令牌。在这里,我收到以下错误。
"error":"invalid_grant","error_description":"AADSTS70000: Transmission data parser failure: Authorization Code is malformed or invalid.
如何将 grant_type=authorization_code 传递给 acquireTokenByAuthorizationCode 方法?
如何查看被触发的 post 请求?我在 chrome?
的网络部分看不到它代码如下:
String authCode = authorizationCode.getValue();
ClientCredential credential = new ClientCredential(clientId,
clientSecret);
AuthenticationContext context;
AuthenticationResult result = null;
ExecutorService service = null;
try {
ThreadFactory factory = ThreadManager.currentRequestThreadFactory();
service = Executors.newCachedThreadPool(factory);
context = new AuthenticationContext(authority + tenant + "/", true,
service);
Future<AuthenticationResult> future = context
.acquireTokenByAuthorizationCode(authCode, new URI(
currentUri), credential, null);
post 请求应该是: 字符串 redirectUrl = 权限 + this.tenant + "/oauth2/v2.0/token?p=b2c_1_abcd&grant_type=authorization_code&resource=https% 3a%2f%2fgraph.windows.net&redirect_uri=" + URLEncoder.encode(REDIRECT_URL, "UTF-8");
不确定如何提供粗体信息。
在获得更多信息后进行编辑
如果您使用的是 v2 终结点,则无法使用 ADAL。
如果您已在 v2 开发门户中注册您的应用,则需要通过 Azure 门户的 Azure AD 界面注册您的应用。然后确保您的 Azure AD URL 不包含 v2.0。
要获取带有授权码的令牌,请使用 acquireTokenByAuthorizationCode
(https://github.com/Azure-Samples/active-directory-java-webapp-openidconnect/blob/master/src/main/java/com/microsoft/aad/adal4jsample/BasicFilter.java#L268-L270):
Future<AuthenticationResult> future = context
.acquireTokenByAuthorizationCode(authCode, new URI(
currentUri), credential, null);
您不会在 Chrome 中看到请求,因为它是从您的 Web 服务器发送到 Azure AD。浏览器不是链的一部分。 这是一件好事,因为我们将客户端机密传递给 Azure AD。您可以使用 Fiddler 等工具来监控流量。