Ответ 1
Внедрение IdSvr4 - это фантастика, но документы оставляют желать лучшего - я потратил целый час на поиск в Интернете, чтобы найти рабочее решение. То, что вам говорят "читать спецификацию", не всегда полезно, если вы новичок в концепции, что часто случается на их форумах.
Итак, то, что вы должны передать POST/connect/introspect
является секретом области.
Вы можете настроить быстрый запуск, изменив класс config.cs
. Вам нужно будет обновить хранилище данных, которое вы используете, если вы настроили его или не используете быстрый запуск - но концепция должна (надеюсь) быть ясной.
public static IEnumerable<ApiResource> GetApiResources()
{
return new List<ApiResource>
{
new ApiResource("MyResource", "My_Resource_DisplayName")
{
ApiSecrets = new List<Secret>
{
new Secret("hello".Sha256())
},
Scopes=
{
new Scope("MY_CUSTOM_SCOPE")
}
}
};
}
Сейчас...
1. Убедитесь, что ваш клиент имеет область действия MY_CUSTOM_SCOPE
2. Убедитесь, что вы запросили область действия MY_CUSTOM_SCOPE
при получении токена на предъявителя.
Теперь создайте в кодировке Base64 строку с именем ресурса api и секретом, например так:
Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format("{0}:{1}", userName, password)));
Там, где имя пользователя - MyResource
а пароль - в виде открытого текста (hello
используйте ваши собственные значения!) - в итоге должна TXlSZXNvdXJjZTpoZWxsbw==
строка, которая выглядит следующим образом: TXlSZXNvdXJjZTpoZWxsbw==
Теперь вы можете отправлять сообщения в IDSvr4...
POST /connect/introspect
Authorization: Basic TXlSZXNvdXJjZTpoZWxsbw==
Accept: application/json
Content-Type: application/x-www-form-urlencoded
token=<YOUR_TOKEN>
Итак, если ваш токен на предъявителя имеет область действия MY_CUSTOM_SCOPE
(или как вы там его называли), теперь вы сможете использовать конечную точку самоанализа IdSvr для получения информации об этом.
Надеюсь, это поможет!