Я нашел решение для устранения этой ошибки, добавив тип заявки с именем пользователя и объявив это в области ресурсов API:
new ApiResource
{
Name="jsreportscope",
DisplayName = "JavaScript based reporting platform",
Scopes=
{
new Scope()
{
Name="jsreportscope",
UserClaims = new List<string>(){"username" }
}
},
UserClaims = new List<string>(){"username"},
ApiSecrets = { new Secret("yoursecret".Sha256()) },
}
Но теперь речь идет о предыдущей проблеме, которую я исправил, добавив тип заявки, соответствующий значению поля имени пользователя, с версией сервера идентификации 1.1, но теперь мы обновили версию сервера идентификации до 2.1 и снова получили сообщение об ошибке. Он смог авторизовать любого пользователя сервера идентификации для доступа к отчету. Вот код jsreport.config.js , который я использую:
{
"store": { "provider": "fs" },
"httpPort": 5004,
"allowLocalFilesAccess": true,
"extensions": {
"authentication": {
"cookieSession": {
"secret": "<your strong secret>"
},
"admin": {
"username": "IdentityServer4User@domain.com",
"password": "Password"
},
"authorizationServer": {
"tokenValidation": {
"endpoint": "http://localhost:5000/connect/introspect",
"usernameField": "username",
"activeField": "active",
"scope": {
"valid": ["jsreportscope"]
},
"auth": {
"type": "basic",
"basic": {
"clientId": "jsreport",
"clientSecret": "yoursecret"
}
}
}
},
"enabled": true
},
"authorization": {
"enabled": true
},
"sample-template": {
"createSamples": true
}
}
}
Но теперь я могу входить в систему и получать доступ к отчетам с сервера отчетов, если вход в систему осуществляется только пользователем IdentityServer4User@domain.com. Любые другие пользователи получают несанкционированную ошибку. В консоли сервера отчетов ошибка отображается как:
error: username "OtherIdentityServer4User@domain.com" returned from authorization server is not a jsreport user.
Я не хочу добавлять всех пользователей сервера идентификации на сервер отчетов js.