Я ищу помощь кого-то, кто знает что-то о дополнениях Jira.
Я пытаюсь реализовать дополнение Jira с возможностью создавать проблемы от имени пользователя.
Итак, я выполнил все шаги (как мне кажется), ведя меня к своей цели, но я столкнулся с проблемой подражания.Когда я пытаюсь создать проблему, используя Jira REST API, я получаю следующую ошибку:
{"error": "дополнение" com.example.myapp "не разрешено выдавать себя за пользователя, потому что"действительный активный пользователь не существует '"}
Что было сделано:
После начало работы руководство Я создал дескриптор дополнения:
{
"name": "Hello World",
"description": "Atlassian Connect app",
"key": "com.example.myapp",
"baseUrl": "https://url.ngrok.io",
"vendor": {
"name": "Example, Inc.",
"url": "http://example.com"
},
"authentication": {
"type": "jwt"
},
"scopes": [
"act_as_user",
"read",
"write",
],
"lifecycle": {
"installed": "/api/created",
},
"apiVersion": 1
}
Я также реализовал webhook для обработки обратного вызова ' Установлено ' из дополнения, как описано здесь .Поэтому, когда пользователь устанавливает надстройку, webhook получит следующий объект:
{
'key': 'com.example.myapp',
'clientKey': '<client key>',
'oauthClientId': '<OAuth client ID>',
'publicKey': '<public key>',
'sharedSecret': '<shared secret>',
'serverVersion': '100095',
'pluginsVersion': '1.250.0',
'baseUrl': 'https://<user's domain>.atlassian.net',
'productType': 'jira',
'description': 'Description',
'eventType': 'installed'
}
Используя эти данные, я сгенерировал JWT, подписанный общим секретным ключом, как описано в учебнике .Итак, моя полезная нагрузка JWT включает в себя следующие утверждения:
{
'iss': 'urn:atlassian:connect:clientid:<OAuth client ID>',
'sub': 'urn:atlassian:connect:useraccountid:<client key>',
'tnt': 'https://<user's domain>.atlassian.net',
'iss': '<created at>',
'exp': '<created at + 1 minute>'
}
Следующим шагом, который я выполнил, является генерация токена доступа с использованием конечной точки auth.atlassian.io / oauth2 / token и следующих параметров:
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=<my JWT>&scope=ACT_AS_USER READ WRITE
Результатом всех этих действий является маркер доступа, который я могу использовать для выполнения запросов REST API.Но описанная выше ошибка возвращалась каждый раз, когда я пытался создать проблему Jira, выполняющую POST [user's domain].atlassian.net/rest/api/2/issue/
с заголовком Authorization: Bearer [access_token]
.
Я заметил, что идентификатор учетной записи в установленном объекте обратного вызова (clientKey
) имеет 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
(uuid) формат.Но когда я открываю свою учетную запись в Jira (учетная запись в которой установлена надстройка), я вижу, что идентификатор учетной записи в URL имеет формат 'YYYYYY:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
.Я добавил тему в свою полезную нагрузку JWT с частью YYYYYY:
'sub': 'urn:atlassian:connect:useraccountid:'YYYYYY:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
и с помощью этого JWT сгенерировал новый токен доступа.Я использовал новый токен доступа для создания проблемы, и она была успешно создана. Репортер проблемы - пользователь установил мое дополнение, как я и хотел.
Наконец, вопрос: где я могу найти эту YYYYYY
часть для моего дополнения?Как получить это автоматически?Что я пропустил после уроков?Любая помощь будет оценена.
Спасибо!