2017-02-02 11 views
0

Я пытаюсь аутентифицировать пользователя из пользовательского веб-приложения с помощью поставщика услуг OpenID Connect в WSO2. Я отвечаю на вопрос this article и добавил пакет Nuget Thinktecture.IdentityModel.Client. Мой код очень похож на связанный статье:WSO2 Implicit Flow не возвращает id_token

var client = new OAuth2Client(new Uri(serviceProviderAuthorizeUrl)); 

     var url = client.CreateImplicitFlowUrl(
      clientId, 
      redirectUri: redirectUrl, 
      scope: scope, 
      nonce: Guid.NewGuid().ToString()); 

     Response.Redirect(url); 

URL-адрес выходит быть: https://{wso2_url}/oauth2/authorize?client_id={my_client_id}&response_type=token&scope=openid&redirect_uri=https%3A%2F%2F{mydomain}%2F{my_app}%2FCallback.aspx&nonce=f0db4eac-18df-46f6-92f1-c28ba621596d

Теперь это делает работу и возвращает access_token: https://{my_domain}/{my_app}/Callback.aspx#token_type=Bearer&expires_in=970&access_token=067e3366217798986912326a86abd92f

Моя проблема не в том, что у меня нет идея, кем является пользователь. Более того, это WSO2 article показывает, что если я передаю response_type: id_token, я должен иметь возможность декодировать ответ и выяснить, кто пользователь, используя атрибут sub, но я не получаю ответ id_token. Приведенный выше код создает вместо него URL-адрес с типом response_type. Простое изменение response_type дает мне ошибку. Как я могу использовать неявный поток в WSO2 и получить ответ id_token?

Я следил за этим article для конфигурации WSO2. В настоящее время я проверяю неявные и учетные данные клиента.

ответ

0

Убедитесь, что у вас есть параметры запроса.

response_type=id_token 
client_id=xxxxx 
redirect_uri=http://xx.com/xx/x 
nonce=xxxx 
scope=openid 
+0

Функция CreateImplicitFlowUrl не принимает параметр для response_type. Я также пробовал это: «var url = serviceProviderAuthorizeUrl +»? Response_type = "+ HttpUtility.UrlEncode (responseType) +" & client_id "+ HttpUtility.UrlEncode (clientId) + " & redirect_uri = "+ HttpUtility.UrlEncode (redirectUrl) +" & nonce = "+ HttpUtility.UrlEncode (Guid.NewGuid(). ToString()) +" & scope = "+ HttpUtility.UrlEncode (scope); Response.Redirect (url); 'и передал id_token как response_type, и я получил сообщение об ошибке с WSO2. Хотелось бы, чтобы все было так просто, но это не так. –