Allow to set service provider entity id

Change-Id: Ic2b9ac2101eb66cdadfef9d0c69c5d6247fdbcc5
diff --git a/README.md b/README.md
index 9266e27..89abd32 100644
--- a/README.md
+++ b/README.md
@@ -151,3 +151,6 @@
 
 Default is `UserName`
 
+**saml.serviceProviderEntityId**: Saml service provider entity id
+
+Default is not set.
diff --git a/src/main/java/com/thesamet/gerrit/plugins/saml/SamlConfig.java b/src/main/java/com/thesamet/gerrit/plugins/saml/SamlConfig.java
index ef01d02..1906d02 100644
--- a/src/main/java/com/thesamet/gerrit/plugins/saml/SamlConfig.java
+++ b/src/main/java/com/thesamet/gerrit/plugins/saml/SamlConfig.java
@@ -24,6 +24,7 @@
 public class SamlConfig {
   private static final String SAML_SECTION = "saml";
 
+  private final String serviceProviderEntityId;
   private final String metadataPath;
   private final String keystorePath;
   private final String privateKeyPassword;
@@ -39,6 +40,7 @@
 
   @Inject
   SamlConfig(@GerritServerConfig Config cfg) {
+    serviceProviderEntityId = getString(cfg, "serviceProviderEntityId");
     metadataPath = getString(cfg, "metadataPath");
     keystorePath = getString(cfg, "keystorePath");
     privateKeyPassword = getString(cfg, "privateKeyPassword");
@@ -107,4 +109,8 @@
   public boolean isComputedDisplayName() {
     return computedDisplayName;
   }
+
+  public String getServiceProviderEntityId() {
+    return serviceProviderEntityId;
+  }
 }
diff --git a/src/main/java/com/thesamet/gerrit/plugins/saml/SamlWebFilter.java b/src/main/java/com/thesamet/gerrit/plugins/saml/SamlWebFilter.java
index df30139..60e2659 100644
--- a/src/main/java/com/thesamet/gerrit/plugins/saml/SamlWebFilter.java
+++ b/src/main/java/com/thesamet/gerrit/plugins/saml/SamlWebFilter.java
@@ -14,6 +14,7 @@
 
 package com.thesamet.gerrit.plugins.saml;
 
+import com.google.common.base.Strings;
 import com.google.common.collect.Iterators;
 import com.google.common.collect.Sets;
 import com.google.gerrit.extensions.restapi.Url;
@@ -81,6 +82,9 @@
     samlClientConfig.setMaximumAuthenticationLifetime(samlConfig.getMaxAuthLifetimeAttr());
     samlClientConfig.setServiceProviderMetadataPath(
         ensureExists(sitePaths.data_dir).resolve("sp-metadata.xml").toString());
+    if (!Strings.isNullOrEmpty(samlConfig.getServiceProviderEntityId())) {
+      samlClientConfig.setServiceProviderEntityId(samlConfig.getServiceProviderEntityId());
+    }
 
     saml2Client = new SAML2Client(samlClientConfig);
     String callbackUrl = gerritConfig.getString("gerrit", null, "canonicalWebUrl") + SAML_CALLBACK;