テンセントクラウド
テンセントクラウド内のSAML IdPとしてのCasdoor
このガイドでは、Casdoorとテンセントクラウドを設定して、テンセントクラウドにCasdoorをSAML IdPとして追加する方法を示します。
Saml MetaDataをコピー
Casdoorで、RSA暗号アルゴリズムを使用したX.509タイプの証明書を追加します。
次に、Casdoor内のSamlMetadataをコピーします。
テンセントクラウドにSAML IdPを追加
テンセントクラウドにログインし、アクセス管理インターフェースに入ります。
新しいアイデンティティプロバイダを作成し、以前にコピーしたsamlメタデータをテンセントクラウドにアップロードします。
次に、新しいロールを作成し、以前にアイデンティティプロバイダとして選択したidpプロバイダを選択します。
CasdoorでのSAMLアプリケーションの設定
アプリケーション編集ページで、作成したばかりの証明書を選択します。 リダイレクトURLに使用するテンセントクラウドアプリケーションのドメイン名を追加します。
アプリケーション編集ページで、ACS URLを入力し、Saml属性を設定します。
Saml属性の設定情報は以下の通りです:
名前 | 名前フォーマット | 値 |
---|---|---|
https://cloud.tencent.com/SAML/Attributes/Role | 指定なし | 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 | 指定なし | casdoor |
情報
- ロールソース属性で、{AccountID}、{RoleName}、{ProviderName}を以下の内容に置き換えます:
- {AccountID}をあなたのテンセントクラウドアカウントIDに置き換えてください。これはアカウント情報 - コンソールで確認できます。
- {RoleName}をテンセントクラウドで作成したロール名に置き換えてください。これはロール - コンソールで確認できます。
- {ProviderName}をテンセントクラウドで作成したSAMLアイデンティティプロバイダの名前に置き換えてください。これはアイデンティティプロバイダ - コンソールで確認できます。
テンセントクラウドSAMLアイデンティティプロバイダの詳細情報は、ドキュメントで確認できます。
Casdoor SAMLを使用してログイン
SAMLの一般的なログイン手順は次のとおりです:ユーザー -> テンセントクラウド(未ログイン) -> Casdoorでのログインにリダイレクト -> テンセントクラウド(ログイン済み)。 今、外部のコードを使用して最初の2ステップをシミュレートし、CasdoorにリダイレクトするURLを生成します。 サンプルコード:
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)
}
コードを実行して認証URLを取得したら、URLをクリックするとログインをテストできます。 このプロセスのデモを提供します。