Используйте KeycloakOwinAuthentication для авторизации сервисов asp.net web api 2 - PullRequest
0 голосов
/ 25 апреля 2018

Я хочу использовать этот не поддерживаемый проект для того, чтобы авторизовать сервисы моего веб-API, поскольку нам необходимо использовать Keycloak.

Это было довольно легко выполнить учебник и заставить его работать в моем веб-интерфейсе, но я не могу найти ни одного примера использования токенов вместо интерактивного входа в систему.Веб-API получит с запросом http заголовок авторизации нашего уже зарегистрированного клиента, и цель состоит в том, чтобы изолировать службы и авторизовать их на основе некоторых ролей.

Я внес некоторые изменения в Startup.cs -Метод конфигурации:

ConfigureAuth(app);
app.UseKeycloakAuthentication(new KeycloakAuthenticationOptions
        {
            // App-Specific Settings
            ClientId = "demo-app", // *Required*
            ClientSecret = "ssshhhh", // If using public authentication, delete this line
            VirtualDirectory = "", // Set this if you use a virtual directory when deploying to IIS

            // Instance-Specific Settings
            Realm = "PruebaRealm", // Don't change this unless told to do so
            KeycloakUrl = "http://example.com/auth", // Enter your Keycloak URL here

            // Template-Specific Settings
            EnableWebApiMode = true,
            AuthenticationType = "KeycloakOwinAuthenticationSample_keycloak_auth", // Unique identifier for the auth middleware
        }); 

И я добавил атрибут авторизации в метод htttp:

[Authorize]
public IHttpActionResult Get()
{    
    PrivilegeProvider pPrivileges = new PrivilegeProvider();
    var searchResults = pPrivileges.GetPrivilege();
    if (searchResults == null)
        return NotFound();
    return Ok(searchResults);
    }

Когда я выполняю запрос, включая заголовок авторизации

Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: es-ES,es;q=0.9
Authorization: bearer thisisanexamplethisisanexamplethisisanexample....
Cache-Control: no-cache
Connection: keep-alive
Host: localhost:49729
Origin: http://localhost:4200
Pragma: no-cache
Referer: http://localhost:4200/privilegios
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36

Я всегда получаю:

Access Unauthorized: Requires valid bearer token authorization header

Может кто-нибудь дать мне совет для достижения этой цели?Я подумываю о создании собственного адаптера с помощью owin.

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...