Tencent Cloud
Casdoor como um SAML IdP no Tencent Cloud
Este guia mostrará como configurar o Casdoor e o Tencent Cloud para adicionar o Casdoor como um SAML IdP no Tencent Cloud.
Copiar Saml MetaData
No Casdoor, adicione um certificado do tipo X.509 com algoritmo criptográfico RSA.
Então copie o SamlMetadata no Casdoor.
Adicionando SAML IdP no Tencent Cloud
Faça login no Tencent Cloud e entre na interface de gerenciamento de acesso.
Crie um novo Provedores de Identidade e faça o upload dos metadados saml previamente copiados para o Tencent Cloud.
Então crie um novo PAPEL e selecione os Provedores de Identidade previamente como provedor idp.
Configurando o aplicativo SAML no Casdoor
Na página de edição do aplicativo, selecione o certificado que você acabou de criar. Adicione o nome de domínio do aplicativo Tencent Cloud que você usará nos URLs de Redirecionamento.
Na página de edição do aplicativo, insira a URL ACS e configure o Atributo Saml.
As informações de configuração para Atributo Saml são as seguintes:
Nome | Formato do Nome | Valor |
---|---|---|
https://cloud.tencent.com/SAML/Attributes/Role | Não especificado | qcs::cam::uin/{AccountID}:roleName/{RoleName1};qcs::cam::uin/{AccountID}:roleName/{RoleName2},qcs::cam::uin/{AccountID}:saml-provider/{ProviderName} |
https://cloud.tencent.com/SAML/Attributes/RoleSessionName | Não especificado | casdoor |
- No atributo fonte de Papel, substitua {AccountID}, {RoleName} e {ProviderName} com o seguinte conteúdo:
- Substitua {AccountID} pelo ID da sua conta Tencent Cloud, que pode ser visualizado na Informação da Conta - Console.
- Substitua {RoleName} pelo nome do papel que você criou no Tencent Cloud, que pode ser visualizado na Papéis - Console.
- Substitua {ProviderName} pelo nome do provedor de identidade SAML que você criou no Tencent Cloud, que pode ser visualizado na Provedores de Identidade - Console.
Você pode visitar a documentação dos Provedores de Identidade SAML do Tencent Cloud para obter mais informações detalhadas.
Fazendo login usando Casdoor SAML
Os passos gerais de login para SAML são os seguintes: Usuário -> Tencent Cloud (não logado) -> Redirecionar para o Casdoor para login -> Tencent Cloud (logado). Agora, use o código externamente para simular os dois primeiros passos e gerar uma URL que redireciona para o Casdoor. Código de exemplo:
func main() {
res, err := http.Get("your casdoor application saml metadata url")
if err != nil {
panic(err)
}
rawMetadata, err := ioutil.ReadAll(res.Body)
if err != nil {
panic(err)
}
metadata := &types.EntityDescriptor{}
err = xml.Unmarshal(rawMetadata, metadata)
if err != nil {
panic(err)
}
certStore := dsig.MemoryX509CertificateStore{
Roots: []*x509.Certificate{},
}
for _, kd := range metadata.IDPSSODescriptor.KeyDescriptors {
for idx, xcert := range kd.KeyInfo.X509Data.X509Certificates {
if xcert.Data == "" {
panic(fmt.Errorf("metadata certificate(%d) must not be empty", idx))
}
certData, err := base64.StdEncoding.DecodeString(xcert.Data)
if err != nil {
panic(err)
}
idpCert, err := x509.ParseCertificate(certData)
if err != nil {
panic(err)
}
certStore.Roots = append(certStore.Roots, idpCert)
}
}
randomKeyStore := dsig.RandomKeyStoreForTest()
sp := &saml2.SAMLServiceProvider{
IdentityProviderSSOURL: metadata.IDPSSODescriptor.SingleSignOnServices[0].Location,
IdentityProviderIssuer: metadata.EntityID,
ServiceProviderIssuer: "https://cloud.tencent.com",
AssertionConsumerServiceURL: "https://cloud.tencent.com/login/saml",
SignAuthnRequests: true,
AudienceURI: "https://cloud.tencent.com",
IDPCertificateStore: &certStore,
SPKeyStore: randomKeyStore,
}
println("Visit this URL To Authenticate:")
authURL, err := sp.BuildAuthURL("")
if err != nil {
panic(err)
}
println(authURL)
}
Uma vez que executamos o código e obtemos a URL de autenticação, clicar na URL nos permitirá testar o login. nós fornecemos uma demonstração deste processo.