Я занимаюсь разработкой приложения intr anet
Backend :. NET Core Web API-2 Frontend : Angular 4 +
Для бэкэнда я использовал Windows Авторизация на основе политик, и я получаю всю информацию для авторизации из Active Directory. См. Ниже код:
Мой Обработчик авторизации
public class BranchUserHandler : AuthorizationHandler<BranchUserRequirement>
{
protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, BranchUserRequirement requirement)
{
string userCPNumber = context.User.Identity.Name;
using (var ctx = new PrincipalContext(ContextType.Domain, "CAPITECBANK"))
{
UserPrincipal user = UserPrincipal.FindByIdentity(ctx, userCPNumber);
if (user == null)
{
return Task.CompletedTask;
}
else
{
string userCompany = user.GetCompany();
if (requirement.Company == userCompany)
{
string userDepartment = user.GetDepartment();
if (requirement.Department == user.GetDepartment())
{
string userDescription = user.GetDescription();
if (requirement.Description == userDescription)
{
string userTitle = user.GetTitle();
if (requirement.Title.Contains(userTitle))
{
context.Succeed(requirement);
}
}
}
}
}
}
return Task.CompletedTask;
}
}
Запуск
public void ConfigureServices(IServiceCollection services)
{
services.ConfigureRepositoryContext(Configuration);
services.configureRepositoryWrapper();
services.AddCors(options =>
{
options.AddPolicy("CorsPolicy",
builder => builder.WithOrigins("http://localhost:62000")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials());
});
services.ConfigureSwagger();
services.AddAutoMapper(typeof(Startup));
services.Configure<IISOptions>(options =>
{
options.AutomaticAuthentication = true;
});
services.AddAuthorization(options =>
{
options.AddPolicy("WorksInBranch", policy => policy.Requirements.Add(new BranchUserRequirement("Information Technology",
"Systems Development - Revenue & Products", "SYSTEM DEVELOPMENT",
new List<string>{"Regional Manager", "Branch Manager", "Assistant Branch Manager",
"ATM Assistant", "Service Consultant", "Sales Consultant", "Junior Support Analyst: Card Processing Channels"})));
});
services.AddSingleton<IAuthorizationHandler, BranchUserHandler>();
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddMvc()
.AddJsonOptions(
options => options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
);
//services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}
Итак, на Angular frontend, я хочу, чтобы пользователь автоматически авторизировался, если пользователь в данный момент вошел в систему на своем компьютере windows, т.е. пользователю не нужно вводить учетные данные, если пользователь вошел в систему на своем компьютере windows.
Обратите внимание, что у меня есть два отдельных проекта для веб-API и для клиентской части.
Я осмотрелся, но ничего не помогло. Кто-нибудь может мне помочь?
Заранее спасибо