Browse Source

Update the AuthorizationController samples to validate the identity provider dynamically

pull/1939/head
Kévin Chalet 3 years ago
parent
commit
570c7c3123
  1. 9
      sandbox/OpenIddict.Sandbox.AspNet.Server/Controllers/AuthorizationController.cs
  2. 9
      sandbox/OpenIddict.Sandbox.AspNetCore.Server/Controllers/AuthorizationController.cs

9
sandbox/OpenIddict.Sandbox.AspNet.Server/Controllers/AuthorizationController.cs

@ -16,13 +16,13 @@ using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.Owin; using Microsoft.AspNet.Identity.Owin;
using Microsoft.Owin.Security; using Microsoft.Owin.Security;
using OpenIddict.Abstractions; using OpenIddict.Abstractions;
using OpenIddict.Client;
using OpenIddict.Client.Owin; using OpenIddict.Client.Owin;
using OpenIddict.Sandbox.AspNet.Server.Helpers; using OpenIddict.Sandbox.AspNet.Server.Helpers;
using OpenIddict.Sandbox.AspNet.Server.ViewModels.Authorization; using OpenIddict.Sandbox.AspNet.Server.ViewModels.Authorization;
using OpenIddict.Server.Owin; using OpenIddict.Server.Owin;
using Owin; using Owin;
using static OpenIddict.Abstractions.OpenIddictConstants; using static OpenIddict.Abstractions.OpenIddictConstants;
using static OpenIddict.Client.WebIntegration.OpenIddictClientWebIntegrationConstants;
namespace OpenIddict.Sandbox.AspNet.Server.Controllers namespace OpenIddict.Sandbox.AspNet.Server.Controllers
{ {
@ -30,15 +30,18 @@ namespace OpenIddict.Sandbox.AspNet.Server.Controllers
{ {
private readonly IOpenIddictApplicationManager _applicationManager; private readonly IOpenIddictApplicationManager _applicationManager;
private readonly IOpenIddictAuthorizationManager _authorizationManager; private readonly IOpenIddictAuthorizationManager _authorizationManager;
private readonly OpenIddictClientService _clientService;
private readonly IOpenIddictScopeManager _scopeManager; private readonly IOpenIddictScopeManager _scopeManager;
public AuthorizationController( public AuthorizationController(
IOpenIddictApplicationManager applicationManager, IOpenIddictApplicationManager applicationManager,
IOpenIddictAuthorizationManager authorizationManager, IOpenIddictAuthorizationManager authorizationManager,
OpenIddictClientService clientService,
IOpenIddictScopeManager scopeManager) IOpenIddictScopeManager scopeManager)
{ {
_applicationManager = applicationManager; _applicationManager = applicationManager;
_authorizationManager = authorizationManager; _authorizationManager = authorizationManager;
_clientService = clientService;
_scopeManager = scopeManager; _scopeManager = scopeManager;
} }
@ -60,7 +63,9 @@ namespace OpenIddict.Sandbox.AspNet.Server.Controllers
// that will be used to authenticate the user, the identity_provider parameter can be used for that. // that will be used to authenticate the user, the identity_provider parameter can be used for that.
if (!string.IsNullOrEmpty(request.IdentityProvider)) if (!string.IsNullOrEmpty(request.IdentityProvider))
{ {
if (!string.Equals(request.IdentityProvider, Providers.GitHub, StringComparison.Ordinal)) var registrations = await _clientService.GetClientRegistrationsAsync();
if (!registrations.Any(registration => string.Equals(registration.ProviderName,
request.IdentityProvider, StringComparison.Ordinal)))
{ {
context.Authentication.Challenge( context.Authentication.Challenge(
authenticationTypes: OpenIddictServerOwinDefaults.AuthenticationType, authenticationTypes: OpenIddictServerOwinDefaults.AuthenticationType,

9
sandbox/OpenIddict.Sandbox.AspNetCore.Server/Controllers/AuthorizationController.cs

@ -14,13 +14,13 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives; using Microsoft.Extensions.Primitives;
using Microsoft.IdentityModel.Tokens; using Microsoft.IdentityModel.Tokens;
using OpenIddict.Abstractions; using OpenIddict.Abstractions;
using OpenIddict.Client;
using OpenIddict.Client.AspNetCore; using OpenIddict.Client.AspNetCore;
using OpenIddict.Sandbox.AspNetCore.Server.Helpers; using OpenIddict.Sandbox.AspNetCore.Server.Helpers;
using OpenIddict.Sandbox.AspNetCore.Server.Models; using OpenIddict.Sandbox.AspNetCore.Server.Models;
using OpenIddict.Sandbox.AspNetCore.Server.ViewModels.Authorization; using OpenIddict.Sandbox.AspNetCore.Server.ViewModels.Authorization;
using OpenIddict.Server.AspNetCore; using OpenIddict.Server.AspNetCore;
using static OpenIddict.Abstractions.OpenIddictConstants; using static OpenIddict.Abstractions.OpenIddictConstants;
using static OpenIddict.Client.WebIntegration.OpenIddictClientWebIntegrationConstants;
namespace OpenIddict.Sandbox.AspNetCore.Server; namespace OpenIddict.Sandbox.AspNetCore.Server;
@ -28,6 +28,7 @@ public class AuthorizationController : Controller
{ {
private readonly IOpenIddictApplicationManager _applicationManager; private readonly IOpenIddictApplicationManager _applicationManager;
private readonly IOpenIddictAuthorizationManager _authorizationManager; private readonly IOpenIddictAuthorizationManager _authorizationManager;
private readonly OpenIddictClientService _clientService;
private readonly IOpenIddictScopeManager _scopeManager; private readonly IOpenIddictScopeManager _scopeManager;
private readonly SignInManager<ApplicationUser> _signInManager; private readonly SignInManager<ApplicationUser> _signInManager;
private readonly UserManager<ApplicationUser> _userManager; private readonly UserManager<ApplicationUser> _userManager;
@ -35,12 +36,14 @@ public class AuthorizationController : Controller
public AuthorizationController( public AuthorizationController(
IOpenIddictApplicationManager applicationManager, IOpenIddictApplicationManager applicationManager,
IOpenIddictAuthorizationManager authorizationManager, IOpenIddictAuthorizationManager authorizationManager,
OpenIddictClientService clientService,
IOpenIddictScopeManager scopeManager, IOpenIddictScopeManager scopeManager,
SignInManager<ApplicationUser> signInManager, SignInManager<ApplicationUser> signInManager,
UserManager<ApplicationUser> userManager) UserManager<ApplicationUser> userManager)
{ {
_applicationManager = applicationManager; _applicationManager = applicationManager;
_authorizationManager = authorizationManager; _authorizationManager = authorizationManager;
_clientService = clientService;
_scopeManager = scopeManager; _scopeManager = scopeManager;
_signInManager = signInManager; _signInManager = signInManager;
_userManager = userManager; _userManager = userManager;
@ -99,7 +102,9 @@ public class AuthorizationController : Controller
// that will be used to authenticate the user, the identity_provider parameter can be used for that. // that will be used to authenticate the user, the identity_provider parameter can be used for that.
if (!string.IsNullOrEmpty(request.IdentityProvider)) if (!string.IsNullOrEmpty(request.IdentityProvider))
{ {
if (!string.Equals(request.IdentityProvider, Providers.GitHub, StringComparison.Ordinal)) var registrations = await _clientService.GetClientRegistrationsAsync();
if (!registrations.Any(registration => string.Equals(registration.ProviderName,
request.IdentityProvider, StringComparison.Ordinal)))
{ {
return Forbid( return Forbid(
authenticationSchemes: OpenIddictServerAspNetCoreDefaults.AuthenticationScheme, authenticationSchemes: OpenIddictServerAspNetCoreDefaults.AuthenticationScheme,

Loading…
Cancel
Save