Аутентификация ядра ASP .NET с использованием SAML / SAML 2.0 - PullRequest
0 голосов
/ 08 октября 2018

Здравствуйте, я пытаюсь реализовать ASP Net Core service provider, чтобы по запросу anonymous пользователи предоставляли им digital certificate (файл .pfx) для заполнения, а затем отправляли этот сертификат на identity providerконечная точка, которая проверит это.Я не понимаю, как или какую библиотеку я должен использовать для создания XML документа.

Запуск

public class Startup {
        public Startup(IConfiguration configuration) {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services) {
            services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
                .AddCookie(o => o.LoginPath = new Microsoft.AspNetCore.Http.PathString("/api/index"));

            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env) {

            app.UseHttpsRedirection();
            app.UseMvc();
            app.UseAuthentication();

        }
    }

Контроллер

[ApiController]
public class MainController : ControllerBase {
    // GET api/values
    [HttpGet]
    [Authorize]
    [Route("api/index")]
    public async Task<string> Index() {
        var claims = new[] { new Claim(ClaimTypes.Name, "MyUserNameOrId"), new Claim(ClaimTypes.Role, "user") };
        var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);

        var request = WebRequest.Create(Constants.IDP);
        var requeststream=request.GetRequestStream();
        var xml = "Generate the xml somehow using the pfx file";
        await requeststream.WriteAsync(Encoding.UTF8.GetBytes(xml), CancellationToken.None);
        var response=await request.GetRequestStreamAsync();
        using(StreamReader reader=new StreamReader(response)) {
            string str = await reader.ReadToEndAsync();
            return str;
        }

    }


}

PS На данный момент у меня есть только ресурсы Identity Provider Url и .pfx файл.
Я пыталсяпосле следующей статьи, но это слишком сложно для начинающего, как я.https://blog.scottlogic.com/2015/11/19/oauth2-with-saml2.html

PS2 Является ли этот Nuget подходящим для задачи: Microsoft.IdentityModel.Tokens.Saml

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...