Я использую шаблон проекта с аутентификацией AzureAD.
С [AllowAnonymous]
возможно отключить аутентификацию для моего контроллера.
Но как включить некоторую настраиваемую базовую c аутентификацию для указанных c API-контроллеров в. NET Core 3,1?
У меня есть AuthorizationFilterAttribute
:
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.Headers.Authorization != null)
{
var authToken = actionContext.Request.Headers
.Authorization.Parameter;
// decoding authToken we get decode value in 'Username:Password' format
var decodeauthToken = System.Text.Encoding.UTF8.GetString(
Convert.FromBase64String(authToken));
// spliting decodeauthToken using ':'
var arrUserNameandPassword = decodeauthToken.Split(':');
// at 0th position of array we get username and at 1st we get password
if (IsAuthorizedUser(arrUserNameandPassword[0], arrUserNameandPassword[1]))
{
// setting current principle
Thread.CurrentPrincipal = new GenericPrincipal(
new GenericIdentity(arrUserNameandPassword[0]), null);
}
else
{
actionContext.Response = actionContext.Request
.CreateResponse(HttpStatusCode.Unauthorized);
}
}
else
{
actionContext.Response = actionContext.Request
.CreateResponse(HttpStatusCode.Unauthorized);
}
}
public static bool IsAuthorizedUser(string Username, string Password)
{
// In this method we can handle our database logic here...
return Username == "TestUser" && Password == "TestPassword";
}
В моем контроллере API я использую
[ApiController]
[BasicAuthentication]
[Route("api/[controller]")]
Когда я вызываю мой HTTP GET
, приложение пытается войдите с помощью AzureAD вместо Basi c Auth.
Я пробовал такие глупые вещи, как [AllowAnonymous]
на контроллере и [BasicAuthentication]
на методе ...