Thank you, adding the lines fixed it.
var buildInGrantTypes = new[] {
OpenIddictConstants.GrantTypes.Implicit, OpenIddictConstants.GrantTypes.Password,
OpenIddictConstants.GrantTypes.AuthorizationCode, OpenIddictConstants.GrantTypes.ClientCredentials,
OpenIddictConstants.GrantTypes.DeviceCode, OpenIddictConstants.GrantTypes.RefreshToken
};
if (!buildInGrantTypes.Contains(grantType))
{
application.Permissions.Add(OpenIddictConstants.Permissions.Prefixes.GrantType + grantType);
}
We have enabled the impersonation, however the impersonation grant type is not seeded to the database. We added "Impersonation" to the grantTypes, as described in the documentation (https://abp.io/docs/latest/modules/account/impersonation#angular). When creating a new database, the Console Test / Angular Application is added to the table OpenIddictApplications.
However, the OpenIddictApplications row Portal_App and column Permissions is missing the 'gt:Impersonation' field. This results in the error message This client application is not allowed to use the specified grant type.. We can fix this by manually adding the gt:Impersonation, as described in this issue.
We would like this to be seeded, so new databases don't require this manual step.
What are we missing?
Content of OpenIddictApplications row Portal_App and column Permissions after seeding. [ "ept:logout", "gt:authorization_code", "rst:code", "ept:authorization", "ept:token", "ept:revocation", "ept:introspection", "gt:password", "gt:client_credentials", "gt:refresh_token", "scp:address", "scp:email", "scp:phone", "scp:profile", "scp:roles", "scp:Portal" ]
Our implementation of the seeder: We are sure this one is being used, as changing the display name does work.
OpenIddictDataSeedContributor
//Console Test / Angular Client
var consoleAndAngularClientId = configurationSection["Portal_App:ClientId"];
if (!consoleAndAngularClientId.IsNullOrWhiteSpace())
{
var consoleAndAngularClientRootUrl = configurationSection["Portal_App:RootUrl"]?.TrimEnd('/');
await CreateApplicationAsync(
name: consoleAndAngularClientId,
type: OpenIddictConstants.ClientTypes.Public,
consentType: OpenIddictConstants.ConsentTypes.Implicit,
displayName: "Console Test / Angular Application",
secret: null,
grantTypes:
[
OpenIddictConstants.GrantTypes.AuthorizationCode,
OpenIddictConstants.GrantTypes.Password,
OpenIddictConstants.GrantTypes.ClientCredentials,
OpenIddictConstants.GrantTypes.RefreshToken,
"LinkLogin", // somehow this is not being seeded to the database
"Impersonation" // somehow this is not being seeded to the database
],
scopes: commonScopes,
redirectUri: consoleAndAngularClientRootUrl,
clientUri: consoleAndAngularClientRootUrl,
postLogoutRedirectUri: consoleAndAngularClientRootUrl
);
}
Thank you, alper!
Thanks, that works. Added it like this.
Log.Logger = new LoggerConfiguration()
.Filter.ByExcluding(logEvent => logEvent.MessageTemplate.Text.StartsWith("An error occurred using the connection to database"))
.ReadFrom.Configuration(configuration)
.CreateLogger();
Thanks, the adding the filter indeed removes two of the three log entries.
There is just one entry left, see below. Any idea how to suppress/filter that one?
[16:46:01 ERR] An error occurred using the connection to database 'portal-test' on server '.'.
Thanks, adding the filter will remove the [15:48:35 ERR] A task was canceled. System.Threading.Tasks.TaskCanceledException: A task was canceled. line.
However 3 other lines are still there. Any suggestion how to suppress/filter those?
[16:46:01 ERR] An error occurred using the connection to database 'portal-test' on server '.'. [16:46:01 ERR] ---------- RemoteServiceErrorInfo ---------- { "code": null, "message": "An internal error occurred during your request!", "details": null, "data": {}, "validationErrors": null }
[16:46:01 ERR] HTTP GET /api/app/cubes?skipCount=0&maxResultCount=20 responded 500 in 1303.3537 ms
When a request is cancelled by the browser, the logs show an error (see below). However this is expected behaviour and should not be logged as error as it clutters our logs. Can you guide us in how to filter this error message from the logs?
I have read the documentation about exception handling, but did not find a way https://docs.abp.io/en/abp/latest/Exception-Handling
[15:48:35 ERR] An error occurred using the connection to database 'portal-test' on server '.'.
[15:48:35 ERR] ---------- RemoteServiceErrorInfo ----------
{
"code": null,
"message": "An internal error occurred during your request!",
"details": null,
"data": {},
"validationErrors": null
}
[15:48:35 ERR] A task was canceled.
System.Threading.Tasks.TaskCanceledException: A task was canceled.
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternalAsync(Boolean errorsExpected, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenInternalAsync(Boolean errorsExpected, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Stor
using Microsoft.AspNetCore.Mvc.Filters;
using System.Threading.Tasks;
[ExposeServices(typeof(AbpExceptionFilter), typeof(IAsyncExceptionFilter))]
public class SuppressTaskCanceledExceptionFilter : AbpExceptionFilter, ITransientDependency
{
public override Task OnExceptionAsync(ExceptionContext context)
{
if (context.Exception is TaskCanceledException)
{
context.ExceptionHandled = true; // This will suppress the logging
return Task.CompletedTask;
}
return base.OnExceptionAsync(context);
}
}
Hi Anjali,
does it contain functionality to connect a google login after account creation? can you explain it with the scenario i am not able understand.
for example when we create user accounts, it would be convenient to have the following steps:
Step 3 is, as far as I know, not possible at the moment? Note: we use the commercial packages.
Hi Anjali,
thanks for the quick response. Using a default role helps, newly created users will see something. This resolves the 'remove cookies' step.
However, I'm still figuring out how to bypass the enable self registration step. We use the ABP commercial package which seem to handle all user management and registration. I could not find the pages/account folder to put the register.cshtm file in. Is there a way to modify this behaviour?
Another question with regards to the ABP commercial package: does it contain functionality to connect a google login after account creation?
Thank you!
Hi ABP team,
i have a question about account creation. We would like to create account for new employees and prepare that before they start their onboarding. But this process is a bit cumbersome at the moment.
Two requirements:
What we do now to create an account with google authentication:
We would like to improve this proces. Can you point us in a direction how to do this? Are we encountering a (known) bug or desired (to be build) feature of the framework or should we change our implementation?
Thanks a lot!