# Авторизация из настольного приложения (и основного домена)

**URL:** https://meta.discourse.org/t/authorization-from-a-desktop-application-and-base-domain-site/134000
**Category:** Support
**Created:** [21.Ноябрь.2019 06:47:59 UTC](https://meta.discourse.org/t/authorization-from-a-desktop-application-and-base-domain-site/134000 "2019-11-21T06:47:59Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![tytel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tytel/32/125606_2.png) [@tytel](https://meta.discourse.org/u/tytel)
#### Post date: [21.Ноябрь.2019 06:47:59 UTC](https://meta.discourse.org/t/authorization-from-a-desktop-application-and-base-domain-site/134000/1 "2019-11-21T06:47:59Z")

</div>

Недавно я настроил SSO, чтобы пользователи могли входить на мой основной сайт ([mysite.com](http://mysite.com)), используя учётную запись Discourse, работающую на поддомене ([forum.mysite.com](http://forum.mysite.com)). Теперь возникли проблемы, так как я также хочу авторизоваться в Discourse через десктопное приложение.

Немного контекста: я запускаю бета-версию десктопного приложения только по приглашениям и хочу убедиться, что у пользователя есть доступ к форуму, прежде чем запустить само приложение.

В идеале я бы добавил простую форму в десктопное приложение и отправлял POST-запрос на форум для проверки пользователя. Я думал, что если Discourse будет провайдером OAuth2, это сработает? Но, кажется, это не так, и я не могу найти способ сделать то, что хочу, хотя, возможно, я что-то упускаю.

Понимаю, что это нестандартный сценарий, и я новичок во всём, что касается пользователей, SSO, OAuth и т. д., поэтому, если я заблудился не в той «кроличьей норе», буду признателен, если кто-то протянет мне руку помощи 😊

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [21.Ноябрь.2019 15:01:35 UTC](https://meta.discourse.org/t/authorization-from-a-desktop-application-and-base-domain-site/134000/2 "2019-11-21T15:01:35Z")

</div>

> [@tytel](#):
>
> Я думал, что если Discourse будет провайдером OAuth2, это сработает? Не думаю, что это так, и я не могу найти способ сделать то, что хочу, но, возможно, я что-то упускаю.

Discourse не может быть провайдером OAuth2, нет (хотя мне бы хотелось увидеть плагин, реализующий это в будущем — это вполне достижимо).

В настоящее время вы можете использовать собственный протокол SSO Discourse для реализации этого. Фактически, мы регулярно делаем это для наших внутренних инструментов на [discourse.org](http://discourse.org):

> [@Use Discourse as an identity provider (SSO, DiscourseConnect)](https://meta.discourse.org/t/using-discourse-as-a-sso-provider/32974):
>
> So you want to use Discourse as an identity provider for your own web app? Great! Let’s get started. Enable [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) provider setting Under Discourse admin site settings (/admin/site\_settings) enable setting enable discourse connect provider and add a secret string to discourse connect provider secrets (used to hash SSO payloads). Implement [DiscourseConnect](https://meta.discourse.org/t/13045?silent=true) in your web app: Generate a random [nonce](https://en.wikipedia.org/wiki/Cryptographic_nonce). Let’s call this value NONCE. Save it temporarily so that you can verify it with the …

Другой вариант, который может лучше подойти для сценария «десктопное приложение» — это использовать поток «API-ключа пользователя». Именно так мы аутентифицируем пользователей в наших приложениях для Android/iOS:

> [@User API keys specification](https://meta.discourse.org/t/user-api-keys-specification/48536):
>
> Discourse contains a system for generating API keys per user if a very specific protocol is followed. This feature facilitates “application” access to Discourse instances without needing to involve moderators. High level description At a high level: Client (desktop app, browser plugin, mobile app) generates a private/public key pair and return url Client redirects to a route on discourse giving discourse its public key Discourse gets approval from user to use app Discourse generat…

---

<div class="post-metadata">

### Author: ![tytel](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/tytel/32/125606_2.png) [@tytel](https://meta.discourse.org/u/tytel)
#### Post date: [21.Ноябрь.2019 15:39:42 UTC](https://meta.discourse.org/t/authorization-from-a-desktop-application-and-base-domain-site/134000/3 "2019-11-21T15:39:42Z")

</div>

Этот «User API Key» выглядит отлично!  
Я попробую, спасибо!

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [21.Декабрь.2019 15:42:34 UTC](https://meta.discourse.org/t/authorization-from-a-desktop-application-and-base-domain-site/134000/4 "2019-12-21T15:42:34Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
