Я пытаюсь реализовать лазурный вход в приложение планировщика nodejs, а затем хочу загрузить файл для обмена.
Сначала мне нужно войти в систему, затем получить токен доступа, обновить токен, токен доступа администратора и т. Д.
Когда я пытаюсь чтобы получить токен доступа, я получил такую ошибку.
Здесь нет никакого внешнего интерфейса.
URL = 'https://login.microsoftonline.com/' + TENANT_ID + '/ oauth2 / token' ,
Ошибка кода состояния: 400 -
"{" error ":" invalid_grant "," error_description ":" AADSTS50058: был отправлен запрос на тихий вход, но ни один пользователь не вошел в систему. \ r \ nИдентификатор трассировки : 05db5c6a-155c-4870-9bca-a518b5931900 \ r \ nИдентификатор корреляции: 1e8372d0-c1ba-4070-88d7-597e9cb5cb2c \ r \ nTimestamp: 2019-08-14 12: 04: 42Z "," error_codes ": [50058] "timestamp": "2019-08-14 12: 04: 42Z", "trace_id": "05db5c6a-155c-4870-9bca-a518b5931900", "correlation_id": "1e8372d0-c1ba-4070-88d7-597e9cb5cb2c", " error_uri ":" https://login.microsoftonline.com/error?code=50058 \ "}"
Вот код
async function init(parsedBody) {
var jwtToken = await sharepointAuth.getJWTToken(parsedBody);
console.log("jwtToken:",jwtToken)
const config = {
JWK_URI: appConstants.JWK_URI,
ISS: appConstants.ISS,
AUD: appConstants.conf.AUD,
};
console.log(config)
await azureJWT.verify(jwtToken, config).then(async () => {
console.log("----------------------------------")
var fileName = 'analytics.min.js';
var filePath = './public/analytics.min.js';
var userAccessToken = await getAccessToken(jwtToken);
console.log("userAccessToken:", userAccessToken);
var accessTokenObj = await sharepointAuth.getAdminAccessToken();
accessToken = accessTokenObj.access_token;
console.log("accessToken:", accessToken)
fs.readFile(filePath, { encoding: null }, function (err, data) {
const relativeUrl = web/GetFolderByServerRelativeUrl('${selectedFolderName}');
const SHAREPOINT_HEADER = {
'Authorization': Bearer ${accessToken},
"Content-Type": application/json;odata=verbose,
'Accept': 'application/json;odata=verbose',
}
const options = {
method: "POST",
uri: ${SHAREPOINT_URI}${relativeUrl}/Files/add(url='${fileName}',overwrite=true),
headers: SHAREPOINT_HEADER,
body: data
};
console.log(options)
rp(options)
.then(() => {
// POST succeeded...
console.log('File uploaded!');
})
.catch((error) => {
// POST failed...
console.log("File Upload Error: ", error.toString());
});
});
});
}
const request = require("request");
const endpoint = "https://login.microsoftonline.com/tenentId/oauth2/token";
const requestParams = {
grant_type: "client_credentials",
client_id: "ClientId",
client_secret: "Secret",
resource: "ClientId"
};
request.post({ url: endpoint, form: requestParams }, function (err, response, body) {
if (err) {
console.log("error");
}
else {
console.log("Body=" + body);
let parsedBody = JSON.parse(body);
if (parsedBody.error_description) {
console.log("Error=" + parsedBody.error_description);
}
else {
console.log("parsedBody : " + parsedBody);
console.log("Access Token=" + parsedBody.access_token);
init(parsedBody);
}
}
});
function getAccessToken(jwtToken) {
return new Promise(async (resolve) => {
try {
const options = {
method: 'POST',
uri: URL,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
formData: {
grant_type: appConstants.OTB_GRANT_TYPE,
client_id: appConstants.conf.AUD,
client_secret: appConstants.conf.CLIENT_SECRET,
resource: appConstants.OTB_RESOURCE_URI2,
client_assertion_type: appConstants.OTB_CLIENT_ASSERTION_TYPE,
requested_token_use: appConstants.OTB_REQ_TOKEN_USE,
scope: appConstants.OTB_SCOPE,
assertion: jwtToken,
},
};
console.log("options:", options)
await rp(options)
.then(async (parsedBody) => {
// POST succeeded...
const result = JSON.parse(parsedBody);
console.log("****************************************** result", result)
refreshToken = result.refresh_token;
resolve(result.access_token);
})
.catch((error) => {
// POST failed...
console.log('getAccessTokenRequestError: ', error.toString());
resolve(appConstants.ACCESS_TOKEN_ERROR);
});
} catch (error) {
console.log('getAccessTokenRequestPromiseError: ', error.toString());
resolve(appConstants.MIDDLEWARE_ERROR);
}
});
}
Я понятия не имею о лазурном входе без внешнего интерфейса. Я хочу войти в Azure и загрузить файл, чтобы поделиться точкой в приложении планировщика в node.
Сначала мне нужно войти в систему, используя идентификатор клиента и секрет. Затем я получил жетон на предъявителя. то я хочу получить токен доступа, используя токен на предъявителя. В то время я получаю такую ошибку.
AADSTS50058: был отправлен запрос на тихий вход, но ни один пользователь не вошел в систему.