Configurar SAML Single Sign-On (SSO) em aplicativo desacoplado ASP.NET Core
Visão geral
Este guia fornece etapas detalhadas para configurar o SAML Single Sign-On (SSO) em um aplicativo de arquitetura desacoplada do ASP.NET Core usando qualquer Provedor de Identidade (IdP) compatível com SAML. O backend (ASP.NET Core) lida com a autenticação SSO, gera um token JWT e o expõe com segurança a qualquer frontend (React, Angular, Vue, etc.).
Suporte a plataformas: O middleware SAML do ASP.NET Core é compatível com o ASP.NET Core 2.0 e versões superiores. Ele suporta todas as plataformas ASP.NET Core, incluindo Windows, Linux e macOS.
Pré-requisitos: Download e instalação
- Versão .NET 5 e superior
- Versão .NET Core 2.1 e .NET Core 3.1
Se você encontrar problemas de CORS ao fazer chamadas de API, adicione o serviço e a política abaixo.
builder.Services.AddCors(options =>
{
options.AddPolicy("<policy-name>",policy =>
{
policy.WithOrigins("<your-origin>",policy)
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials()
});
});
//Add this in the middleware section
app.UseCors("<policy-name>");
Etapas de configuração
Guia passo a passo para SSO SAML do ASP.NET Core usando seu provedor de identidade.
1. Acesse o painel do plugin .NET SAML
- Após a integração, abra seu navegador e navegue até o painel do conector com o URL abaixo:
http(s)<your-dotnet-application-base-url>?ssoaction=config
- Se a página de registro ou de login aparecer, você adicionou com sucesso o middleware miniOrange SAML SSO ao seu aplicativo.
- Registre-se ou faça login com sua conta clicando em Registrar-se botão para configurar o middleware.
2. Configure seu Provedor de Identidade
- Sob o Configurações de Plugin guia, selecione seu provedor de identidade na lista exibida.
Há duas maneiras detalhadas abaixo com as quais você pode obter os metadados do SAML SP para configurar no seu Provedor de Identidade.
A] Usando URL de metadados SAML ou arquivo de metadados
- De acordo com o relatório Menu de configurações do plugin, olhe para Configurações do provedor de serviços. Abaixo, você pode encontrar o URL dos metadados, bem como a opção para baixar os metadados SAML.
- Copie o URL dos metadados ou baixe o arquivo de metadados para configurá-lo no seu provedor de identidade.
- Você pode consultar a captura de tela abaixo:
B] Carregando metadados manualmente
- De Configurações do provedor de serviços seção, você pode copiar manualmente os metadados do provedor de serviços como ID da entidade SP, URL do ACS, URL de logout único e compartilhe-o com seu provedor de identidade para configuração.
- Você pode consultar a captura de tela abaixo:
3. Configurar o middleware SAML do ASP.NET Core como provedor de serviços
Há duas maneiras detalhadas abaixo com as quais você pode configurar os metadados do seu Provedor de Identidade SAML no middleware.
A] Carregar metadados usando o botão Carregar metadados do IDP:
- Se o seu provedor de identidade tiver fornecido a URL de metadados ou o arquivo de metadados (somente formato .xml), você poderá simplesmente configurar os metadados do provedor de identidade no middleware usando o Carregar metadados do IDP opção.
- Copie o URL dos metadados ou baixe o arquivo de metadados para configurá-lo no seu provedor de identidade.
- Você pode consultar a captura de tela abaixo:
- Você pode escolher qualquer uma das opções de acordo com o formato de metadados disponível.
B] Configure os metadados do provedor de identidade manualmente:
- Depois de configurar seu Provedor de Identidade, ele irá fornecer a você ID da entidade IDP, URL de logon único do IDP e Certificado SAML X509 campos respectivamente.
- Clique Economize para salvar seus dados de IDP.
4. Testando SAML SSO
- Clique no Configuração de Teste botão para testar se a configuração SAML que você fez está correta.
- A captura de tela abaixo mostra um resultado bem-sucedido. Clique em Integração SSO para continuar com a integração do SSO.
- Se você estiver enfrentando algum erro no middleware, será exibida uma janela semelhante à abaixo.
- Para solucionar o erro, siga os passos abaixo:
- Debaixo Resolução de problemas guia, ative a alternância para receber os logs do plugin.
- Uma vez habilitado, você poderá recuperar os logs do plugin navegando até Configurações de Plugin guia e clicando em Configuração de Teste.
- Faça o download do arquivo de log do Resolução de problemas aba para ver o que deu errado.
- Você pode compartilhar o arquivo de log conosco em aspnetsupport@xecurify.com e nossa equipe entrará em contato com você para resolver seu problema.
5. Mapeamento de Atributos
- Depois de testar a configuração, mapeie os atributos do seu aplicativo com os atributos do Provedor de Identidade (IdP).
- Observação: Todos os atributos mapeados serão armazenados na sessão para que você possa acessá-los em seu aplicativo.
6. Código de Integração
- Estas etapas permitem que você recupere as informações do usuário SSO em seu aplicativo na forma de declarações de usuário.
- Observação: Este middleware de teste suporta apenas informações do usuário em reivindicações, recuperando informações do usuário na sessão e cabeçalhos está disponível no plugin premium
-
Crie um endpoint GET no lado .NET para retornar o token JWT após o login.
Observação: se você tiver um método para criar um JWT, basta selecionar as declarações do cookie .NET.
Abaixo está o código para sua referência:
[HttpGet("gettoken")]
public string GetToken()
{
if(User.Identity!=null && User.Identity.IsAuthenticated)
{
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes
("Your-JWT-secret-key"));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var identity = (ClaimsIdentity)User.Identity;
var claims = identity.Claims;
var token = new JwtSecurityToken(
issuer:"<issuer-name>",
audience:"<audience>",
claims:claims,
expires: DateTime.UtcNow.AddHours(1),
signingCredentials: creds
);
return new JwtSecurityTokenHandler().WriteToken(token);
}
return null;
}
7. Adicionar botão de login
- Passe o mouse sobre Selecionar ações e clique em Copiar link SSO.
- Use o seguinte URL como um link no aplicativo de onde você deseja executar o SSO:
https://<application-url>?ssoaction=login&appid=<app-id>
- Após o login, você será redirecionado de volta para sua conta aplicação frontend, então você será obrigado a fazer uma chamada de API Para obter o token digital único, e informações do usuário.
- Abaixo está o código de exemplo que você pode usar para fazer a chamada da API para o ponto final do token para obter o token do lado do frontend.
fetch("https://<backend-api-baseurl>/api/gettoken", {
method: "GET",
})
.then((response) => {
//here you will receive the jwt token and the user details
console.log(response);
});
8. Integração de Testes
- Inicie seu aplicativo ASP.NET Core Web API
- Inicie seu aplicativo frontend
- No aplicativo frontend, clique em Login SSO botão que você adicionou
- Depois de Login SAML, você será redirecionado de volta para seu aplicativo front-end. Neste ponto, seu aplicativo front-end chama o /api/gettoken endpoint, que retorna o token e os detalhes do usuário. Você pode usar o Token JWT para fazer suas próximas chamadas de API.
Observação: se você estiver usando o atributo Authorize na API para validação de token, será necessário especificar a política de autenticação, pois agora temos várias políticas registradas.
Para uso JWT: [Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
Artigos Relacionados
Contato
Entre em contato conosco pelo endereço aspnetsupport@xecurify.com e nossa equipe o ajudará a configurar o SSO SAML do ASP.NET Core. Nossa equipe o ajudará a selecionar a solução/plano mais adequado às suas necessidades.
