Я пытался реализовать сервер идентификации с моим угловым приложением, следуя этому руководству . Пока я нашел это действительно полезным.
Я хотел бы получить имя пользователя плюс несколько пользовательских деталей, но я не могу понять, как это сделать.
В разделе
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](https://i.stack.imgur.com/kHwwc.png)
Нужно ли что-то делать на сервере, чтобы вернуть имя пользователя и т. Д. В настоящее время я использую класс TestUser, но я ожидал увидеть имя пользователя в user.profile на клиенте. На сервере мой пользователь настроен как
new TestUser {
SubjectId = "5BE86359-073C-434B-AD2D-A3932222DABE",
Username = "scott",
Password = "password"
}
и, как показано выше, я вижу SubjectId
(хотя я нахожу странным, что он отображается на sub, а не на sid)
Я понял, что учебник состоял в том, что после успешной регистрации oicd-клиент сделает еще один вызов на сервер, используя полученный токен, чтобы получить сведения о пользователях, когда вы установите loadUserInfo: true
Почему я не вижу деталей?
EDIT:
Снова просматривая урок, я заметил эту строку:
Если для loadUserInfo задано значение true, он также будет вызывать конечную точку информации о пользователе, чтобы получить любые дополнительные идентификационные данные, к которым у него есть права доступа.
Как разрешить конечной точке информации пользователя получать доступ к данным, к которым я хочу получить доступ?