Здравствуйте, я пытаюсь реализовать 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