Просто единый вход с использованием Identity Server 3?

Мы создаем 8 нативных приложений (IOS, Android, может быть Windows). Все эти нативные приложения имеют внутренний API, созданный с использованием ASP.NET Web Api. Теперь я пытаюсь создать единый вход с помощью IdentityServer3 (https://github.com/IdentityServer/IdentityServer3 ). Данные моих пользователей сохраняются в ASP.NET Identity 2. Мне просто нужно проверить имя пользователя/пароль (без внешней аутентификации). Теперь мое замешательство

  1. Сколько областей/утверждений мне нужно или мне не нужно никаких областей/утверждений? Веб-API просто нужно знать идентификатор пользователя, роли пользователей и пользовательские утверждения, сохраненные в таблицах удостоверений ASP.NET.
  2. Какие области должны запрашивать мои клиенты (собственные приложения) с сервера единого входа?
  3. Должны ли они включать id_token или access_token в заголовок авторизации при отправке запроса на мой серверный веб-API ASP.NET?
  4. Теперь мой серверный веб-API ASP.NET должен включать какие области? Я имею в виду, что я должен поставить здесь,

    app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
                {
                    Authority = "https://localhost:44333/core",
                    RequiredScopes = new[] { XXXXXX }
                });
    
  5. Требуется ли https для сервера единого входа? и что такое SigningCertificate? как это связано с сертификатом https?


person user960567    schedule 12.08.2015    source источник


Ответы (1)


  1. Это зависит от того, как вы собираетесь разделить пространство своего API и какую информацию ваш API должен знать о пользователе.
  2. Ваши клиенты должны запрашивать области действия, необходимые им для вызова API и выполнения работы. Например. Скажем, вы разделили свой API на две части [чтение, запись]. Затем предположим, что ваш клиент собирается только читать данные из API, тогда вы можете зарегистрировать свой клиент на сервере Identity, чтобы иметь только область чтения. тогда вы должны запросить только область чтения от Identity Server для этого клиента.
  3. Только Access_Token должен быть включен в заголовок авторизации
  4. Это должно быть для проверки входящего токена. Он проверяет, содержит ли входящий токен заданные области. Вы можете пропустить объявление здесь и использовать атрибуты в методах контроллера API.
  5. Https является обязательным для Identity Server. Сертификат подписи может отличаться от сертификата HTTPS. Сертификат подписи используется для подписи токена, а HTTPS — для безопасности транспорта.
person rawel    schedule 14.08.2015
comment
Чтобы добавить к приведенному выше ответу, SSO выпускает токены в форме JWT. Они подписываются сервером SSO с использованием сертификата подписи, и клиенты могут подтвердить, что токен был выпущен SSO, которому они доверяют, проверив токен с помощью открытого ключа сертификата подписи. - person Simon Halsey; 15.08.2015