今さらきけない环境ハフ?
- 3. ? 環境ハブはCRM for ISV組織(または元来利用しているSales Cloud組織)で有効化します。パートナーコミュニティからCRM for ISV組織の組織
IDを指定して有効化申請のケースを発行します。
環境ハブのセットアップ
? システム管理者以外で環境ハブを使うユーザーには適切な権限を付与する必要があります。例えば、組織の作成や接続はおこなわせたくない
が、各組織へシングルサインオンすることを許可したい場合、次のように権限を付与します。
? アプリケーション > 割り当てられたアプリケーションに環境ハブを追加
? アプリケーション > オブジェクト設定 > ハブメンバーでタブの設定をデフォルトで表示に設定し、オブジェクトの参照権限を追加
? システム > サービスプロバイダでSSOを許可するサービスプロバイダを追加
? 環境ハブに関連する権限のさらなる詳細はISVforceガイドの環境ハブのセクションを参照してください。
? CRM for ISV組織でマイドメインを設定します。マイドメインは
環境ハブからシングルサインオン機能を利用するにあたり必要
になります。
? 有効化完了の連絡がきたら環境ハブは利用可能になっていま
す。CRM for ISV組織にログインし、アプリケーションプルダウ
ンメニューから「環境ハブ」を選択してください。
- 6. ジャストインタイムプロビジョニングのセットアップ(続き)
? ログイン先組織で、管理 > セキュリティのコントロール > シングルサインオン設定で、該当する環境ハブの設定を選択します。
? 編集ボタンをクリックし、SAML ID種別で「アサーションにはユーザーオブジェクトの統合IDが含まれます」を選択、ユーザープロビジョニングの有効化にチェック、
ユーザープロビジョニングのタイプで「Apexハンドラを使用したカスタムSAML JIT」を選択、「SAML JITハンドラテンプレートを自動的に作成する」リンクをクリッ
ク、他のアカウントでハンドラを実行にシステム管理者のユーザーを指定して保存します。
? 開発者コンソールでApexクラス:AutocreatedRegHandler[ランダム番号]を編集し、次ページのソースをペーストします。*クラス名は既存のクラス名に合わせてくださ
い。
- 7. ジャストインタイムプロビジョニングのセットアップ(続き)
global class AutocreatedRegHandler[ランダム番号] implements Auth.SamlJitHandler {
private void handleUser(User u, Map<String, String> attributes, String federationIdentifier) {
u.Username = attributes.get('User.Username') + '.' + UserInfo.getOrganizationId();
u.FederationIdentifier = federationIdentifier;
u.Email = attributes.get('User.Email');
u.FirstName = attributes.get('User.FirstName');
u.LastName = attributes.get('User.LastName');
u.CommunityNickname = attributes.get('User.CommunityNickname');
u.Alias = attributes.get('User.Alias');
String profileName = attributes.get('User.ProfileName');
list<Profile> profileList = [SELECT Id FROM Profile WHERE Name=:profileName];
if (profileList.size() == 1){
u.ProfileId = profileList[0].Id;
}
String uid = UserInfo.getUserId();
User currentUser = [SELECT LocaleSidKey, LanguageLocaleKey, TimeZoneSidKey, EmailEncodingKey FROM User WHERE Id=:uid];
u.LocaleSidKey = currentUser.LocaleSidKey;
u.LanguageLocaleKey = currentUser.LanguageLocaleKey;
u.TimeZoneSidKey = currentUser.TimeZoneSidKey;
u.EmailEncodingKey = currentUser.EmailEncodingKey;
system.debug(u);
}
global void updateUser(Id userId, Id samlSsoProviderId, Id communityId, Id portalId, String federationIdentifier, Map<String, String> attributes, String assertion) {
}
global User createUser(Id samlSsoProviderId, Id communityId, Id portalId, String federationIdentifier, Map<String, String> attributes, String assertion) {
User u = new User();
handleUser(u, attributes, federationIdentifier);
return u;
}
}