BasicAuthenticationAttribute now respects the IBasicAuthenticationValidator.Realm when the own Realm property is not set. IBasicAuthenticationValidator.Realm is now a read-only property (removed public set).
This commit is contained in:
@@ -73,9 +73,16 @@ namespace Microsoft.AspNetCore.Authorization
|
|||||||
|
|
||||||
private void SetAuthenticateRequest(AuthorizationFilterContext context)
|
private void SetAuthenticateRequest(AuthorizationFilterContext context)
|
||||||
{
|
{
|
||||||
|
var validator = context.HttpContext.RequestServices.GetService<IBasicAuthenticationValidator>();
|
||||||
|
string realm = string.IsNullOrWhiteSpace(Realm)
|
||||||
|
? string.IsNullOrWhiteSpace(validator?.Realm)
|
||||||
|
? null
|
||||||
|
: validator.Realm
|
||||||
|
: Realm;
|
||||||
|
|
||||||
context.HttpContext.Response.Headers["WWW-Authenticate"] = "Basic";
|
context.HttpContext.Response.Headers["WWW-Authenticate"] = "Basic";
|
||||||
if (!string.IsNullOrWhiteSpace(Realm))
|
if (!string.IsNullOrWhiteSpace(realm))
|
||||||
context.HttpContext.Response.Headers["WWW-Authenticate"] += $" realm=\"{Realm.Replace("\"", "")}\"";
|
context.HttpContext.Response.Headers["WWW-Authenticate"] += $" realm=\"{realm.Trim().Replace("\"", "")}\"";
|
||||||
|
|
||||||
context.HttpContext.Response.StatusCode = StatusCodes.Status401Unauthorized;
|
context.HttpContext.Response.StatusCode = StatusCodes.Status401Unauthorized;
|
||||||
context.Result = new StatusCodeResult(StatusCodes.Status401Unauthorized);
|
context.Result = new StatusCodeResult(StatusCodes.Status401Unauthorized);
|
||||||
|
|||||||
@@ -10,9 +10,9 @@ namespace AMWD.Common.AspNetCore.BasicAuthentication
|
|||||||
public interface IBasicAuthenticationValidator
|
public interface IBasicAuthenticationValidator
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the realm to use when requesting authentication.
|
/// Gets the realm to use when requesting authentication.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
string Realm { get; set; }
|
string Realm { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Validates a username and password for Basic Authentication.
|
/// Validates a username and password for Basic Authentication.
|
||||||
|
|||||||
Reference in New Issue
Block a user