Идентификационный сервер извлекает данные пользователя - PullRequest
0 голосов
/ 15 марта 2019

Я пытался реализовать сервер идентификации с моим угловым приложением, следуя этому руководству . Пока я нашел это действительно полезным.

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

В разделе

export function getClientSettings(): UserManagerSettings {
    return {
        authority: 'http://localhost:5555/',
        client_id: 'angular_spa',
        redirect_uri: 'http://localhost:4200/auth-callback',
        post_logout_redirect_uri: 'http://localhost:4200/',
        response_type:"id_token token",
        scope:"openid profile api1",
        filterProtocolClaims: true,
        loadUserInfo: true
    };
}

Я убедился, что установил loadUserInfo: true. Но когда я смотрю на содержимое возвращаемого объекта, я не вижу никакой пользовательской информации.

oicd object

Нужно ли что-то делать на сервере, чтобы вернуть имя пользователя и т. Д. В настоящее время я использую класс TestUser, но я ожидал увидеть имя пользователя в user.profile на клиенте. На сервере мой пользователь настроен как

new TestUser {
    SubjectId = "5BE86359-073C-434B-AD2D-A3932222DABE",
    Username = "scott",
    Password = "password"
}

и, как показано выше, я вижу SubjectId (хотя я нахожу странным, что он отображается на sub, а не на sid)

Я понял, что учебник состоял в том, что после успешной регистрации oicd-клиент сделает еще один вызов на сервер, используя полученный токен, чтобы получить сведения о пользователях, когда вы установите loadUserInfo: true

Почему я не вижу деталей?

EDIT:

Снова просматривая урок, я заметил эту строку:

Если для loadUserInfo задано значение true, он также будет вызывать конечную точку информации о пользователе, чтобы получить любые дополнительные идентификационные данные, к которым у него есть права доступа.

Как разрешить конечной точке информации пользователя получать доступ к данным, к которым я хочу получить доступ?

1 Ответ

0 голосов
/ 16 марта 2019

Вам необходимо настроить, какие пользовательские данные будут возвращены, я не настроил никаких!

В Startup.cs убедитесь, что у вас есть следующее:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddIdentityServer()
                ...
                .AddTestUsers(Users.Get())
                ...
    }

Затем добавьте claims вашему пользователю

public static List<TestUser> Get()
    {
        return new List<TestUser> {
            new TestUser {
                SubjectId = "5BE86359-073C-434B-AD2D-A3932222DABE",
                Username = "scott",
                Password = "password",
                Claims = new List<Claim>
                {
                    new Claim("name", "scott"),
                    new Claim("website", "https://scott.com")
                }
            }
        };
    }

претензии затем будут присутствовать в свойстве профиля на клиенте.

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