interactif console oauth2 login
This commit is contained in:
parent
17abd7ffc9
commit
f5e2f6ffa9
4 changed files with 62 additions and 29 deletions
|
|
@ -17,11 +17,11 @@ namespace Yavsc
|
|||
{
|
||||
private Client GetApplication(string clientId)
|
||||
{
|
||||
Client app = null;
|
||||
using (var dbContext = new ApplicationDbContext())
|
||||
{
|
||||
app = dbContext.Applications.FirstOrDefault(x => x.Id == clientId);
|
||||
}
|
||||
if (_dbContext==null)
|
||||
logger.LogError("no db!");
|
||||
Client app = _dbContext.Applications.FirstOrDefault(x => x.Id == clientId);
|
||||
if (app==null)
|
||||
logger.LogError("no app!");
|
||||
return app;
|
||||
}
|
||||
private readonly ConcurrentDictionary<string, string> _authenticationCodes = new ConcurrentDictionary<string, string>(StringComparer.Ordinal);
|
||||
|
|
@ -43,12 +43,18 @@ namespace Yavsc
|
|||
if (context.TryGetBasicCredentials(out clientId, out clientSecret) ||
|
||||
context.TryGetFormCredentials(out clientId, out clientSecret))
|
||||
{
|
||||
logger.LogInformation($"ValidateClientAuthentication: Got id&secret: ({clientId} {clientSecret})");
|
||||
logger.LogInformation($"ValidateClientAuthentication: Got id: ({clientId} secret: {clientSecret})");
|
||||
var client = GetApplication(clientId);
|
||||
if (client==null) {
|
||||
context.SetError("invalid_clientId", "Client secret is invalid.");
|
||||
return Task.FromResult<object>(null);
|
||||
} else
|
||||
if (client.Type == ApplicationTypes.NativeConfidential)
|
||||
{
|
||||
logger.LogInformation($"NativeConfidential key");
|
||||
if (string.IsNullOrWhiteSpace(clientSecret))
|
||||
{
|
||||
logger.LogInformation($"invalid_clientId: Client secret should be sent.");
|
||||
context.SetError("invalid_clientId", "Client secret should be sent.");
|
||||
return Task.FromResult<object>(null);
|
||||
}
|
||||
|
|
@ -59,6 +65,7 @@ namespace Yavsc
|
|||
if (client.Secret != clientSecret)
|
||||
{
|
||||
context.SetError("invalid_clientId", "Client secret is invalid.");
|
||||
logger.LogInformation($"invalid_clientId: Client secret is invalid.");
|
||||
return Task.FromResult<object>(null);
|
||||
}
|
||||
}
|
||||
|
|
@ -67,6 +74,7 @@ namespace Yavsc
|
|||
if (!client.Active)
|
||||
{
|
||||
context.SetError("invalid_clientId", "Client is inactive.");
|
||||
logger.LogInformation($"invalid_clientId: Client is inactive.");
|
||||
return Task.FromResult<object>(null);
|
||||
}
|
||||
|
||||
|
|
@ -75,9 +83,9 @@ namespace Yavsc
|
|||
logger.LogInformation($"\\o/ ValidateClientAuthentication: Validated ({clientId})");
|
||||
context.Validated();
|
||||
}
|
||||
else Startup.logger.LogInformation($":'( ValidateClientAuthentication: KO ({clientId})");
|
||||
else logger.LogInformation($":'( ValidateClientAuthentication: KO ({clientId})");
|
||||
}
|
||||
else Startup.logger.LogWarning($"ValidateClientAuthentication: neither Basic nor Form credential were found");
|
||||
else logger.LogWarning($"ValidateClientAuthentication: neither Basic nor Form credential were found");
|
||||
return Task.FromResult(0);
|
||||
}
|
||||
UserManager<ApplicationUser> _usermanager;
|
||||
|
|
|
|||
|
|
@ -254,10 +254,12 @@ namespace Yavsc
|
|||
});
|
||||
CheckServices(services);
|
||||
}
|
||||
static ApplicationDbContext _dbContext;
|
||||
|
||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
||||
public void Configure(IApplicationBuilder app, IHostingEnvironment env,
|
||||
IOptions<SiteSettings> siteSettings,
|
||||
public void Configure(
|
||||
IApplicationBuilder app, IHostingEnvironment env,
|
||||
ApplicationDbContext dbContext, IOptions<SiteSettings> siteSettings,
|
||||
IOptions<RequestLocalizationOptions> localizationOptions,
|
||||
IOptions<OAuth2AppSettings> oauth2SettingsContainer,
|
||||
IAuthorizationService authorizationService,
|
||||
|
|
@ -267,6 +269,7 @@ namespace Yavsc
|
|||
UserManager<ApplicationUser> usermanager,
|
||||
ILoggerFactory loggerFactory)
|
||||
{
|
||||
_dbContext = dbContext;
|
||||
_usermanager = usermanager;
|
||||
GoogleSettings = googleSettings.Value;
|
||||
ResourcesHelpers.GlobalLocalizer = localizer;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue