Доступ к API Jira с использованием OAuth2.0 2-legged подхода в .NET.
Как создать токен доступа для API JIRA Rest? Из соответствующих данных у меня есть
- Пользовательский ключ
- Комбинация частных/открытых ключей
Jira Rest API Oauth example предполагает трехсторонний подход и очень неясно, какие фактические параметры для отправки (я хочу, чтобы Swagger был более широко использован стандарт!).
Более подробно у меня следующий прецедент:
При создании нового сотрудника в приложении Web Forms (ASPX) мне нужно создать новую учетную запись JIRA и назначить ее проекту (и роли внутри проекта).
Как таковой, я хотел бы использовать аутентификацию OAuth2 с двумя ногами для этого. Возможно, я могу взломать его с помощью Basic Authentication, но я действительно хотел бы сделать это правильно.
Проблема возникает при попытке найти примеры кода, которые используют этот подход. Примеры .NET очень скудны, и даже примеры на других языках обычно используют базовую аутентификацию (имя пользователя и пароль, передаваемые по каждому вызову) или несколько, которые используют подход с тремя ногами.
Я нашел AnotherJiraRestClient, но посмотрел на код, использующий Restrient nuget (это хорошо), но с HttpBasicAuthenticator (это плохо).
Я прошел через все Аутентификаторы, которые предлагают, и OAuth2AuthorizationRequestHeaderAuthenticator выглядит многообещающим, но для этого требуется, чтобы я уже имел токен доступа. Поэтому в конце концов возникает вопрос: "Как создать токен доступа, используя двухъядерный подход?"
Я уже создал ссылку на ссылку JIRA с этими настройками:
- Тип приложения: общее приложение
- Исходящая аутентификация: (дает 500 ошибок сервера на стороне Jira... но не думаю, что это имеет значение, поскольку я не использую ее)
- Входящая аутентификация: OAuth
- Состояние: настроено
- Ключ потребителя: TEST_JIRA_KEY
- Открытый ключ:... (сгенерированный онлайн-закрытый/открытый ключ)
Ответы
Ответ 1
В настоящее время Atlassian не поддерживает OAuth 2.0, но только 1.0 (a).
Для этого есть запрос функции: https://jira.atlassian.com/browse/JRA-43171
Я создал клиента Open Source Jira в С#, > =.NET 4.5 и полностью async (с поддержкой прокси), который доступен в GitHub и как пакет NuGet. См.: https://github.com/dapplo/Dapplo.Jira
Сегодня я добавил поддержку OAuth 1.0a, которую я получил и использую здесь информацию для тестирования:
https://bitbucket.org/atlassian_tutorial/atlassian-oauth-examples/src/d625161454d1?at=default
Я использовал открытый ключ из этого репозитория, чтобы установить тестовую ссылку на моем сервере Jira Cloud, и использовать закрытый ключ в моем тестовом случае.
Код для тестирования находится здесь (он прокомментировал, так как процесс OAuth открывает браузер, что плохо на тестовом сервере)
https://github.com/dapplo/Dapplo.Jira/blob/master/Dapplo.Jira.Tests/JiraOAuthTests.cs
Я все еще ищу способ облегчить чтение сертификата/закрытого ключа, но в некотором роде это не является задачей самой библиотеки...
Если есть какие-либо вопросы, я думаю, что проблемы с GitHub - лучший способ общения.