diff --git a/src/main/java/org/apache/maven/plugins/announcement/AnnouncementMojo.java b/src/main/java/org/apache/maven/plugins/announcement/AnnouncementMojo.java
index 8766de6..a3a1197 100644
--- a/src/main/java/org/apache/maven/plugins/announcement/AnnouncementMojo.java
+++ b/src/main/java/org/apache/maven/plugins/announcement/AnnouncementMojo.java
@@ -48,6 +48,7 @@
 import org.apache.maven.plugins.trac.TracDownloader;
 import org.apache.maven.plugins.trac.TracIssueManagmentSystem;
 import org.apache.maven.project.MavenProject;
+import org.apache.maven.settings.Server;
 import org.apache.maven.settings.Settings;
 import org.apache.maven.settings.crypto.SettingsDecrypter;
 import org.apache.velocity.Template;
@@ -305,6 +306,14 @@
     private String jiraUser;
 
     /**
+     * The settings.xml server id to be used for authentication into a private JIRA installation.
+     *
+     * @since 3.0.0
+     */
+    @Parameter( property = "changes.jiraServerId" )
+    private String jiraServerId;
+
+    /**
      * Path to the JIRA XML file, which will be parsed.
      */
     @Parameter( defaultValue = "${project.build.directory}/jira-announcement.xml", required = true, readonly = true )
@@ -767,9 +776,17 @@
 
         jiraDownloader.setFilter( filter );
 
-        jiraDownloader.setJiraUser( jiraUser );
-
-        jiraDownloader.setJiraPassword( jiraPassword );
+        if ( jiraServerId != null )
+        {
+            final Server server = mavenSession.getSettings().getServer( jiraServerId );
+            jiraDownloader.setJiraUser( server.getUsername() );
+            jiraDownloader.setJiraPassword( server.getPassword() );
+        }
+        else
+        {
+            jiraDownloader.setJiraUser( jiraUser );
+            jiraDownloader.setJiraPassword( jiraPassword );
+        }
 
         jiraDownloader.setUseJql( useJql );
 
diff --git a/src/main/java/org/apache/maven/plugins/jira/JiraMojo.java b/src/main/java/org/apache/maven/plugins/jira/JiraMojo.java
index 1d9c317..a06053b 100644
--- a/src/main/java/org/apache/maven/plugins/jira/JiraMojo.java
+++ b/src/main/java/org/apache/maven/plugins/jira/JiraMojo.java
@@ -36,6 +36,7 @@
 import org.apache.maven.plugins.issues.IssuesReportGenerator;
 import org.apache.maven.plugins.issues.IssuesReportHelper;
 import org.apache.maven.reporting.MavenReportException;
+import org.apache.maven.settings.Server;
 import org.apache.maven.settings.Settings;
 
 /**
@@ -150,6 +151,14 @@
     private String jiraUser;
 
     /**
+     * The settings.xml server id to be used for authentication into a private JIRA installation.
+     *
+     * @since 3.0.0
+     */
+    @Parameter( property = "changes.jiraServerId" )
+    private String jiraServerId;
+
+    /**
      * Path to the JIRA XML file, which will be parsed.
      */
     @Parameter( defaultValue = "${project.build.directory}/jira-results.xml", required = true, readonly = true )
@@ -430,9 +439,17 @@
 
         issueDownloader.setJiraDatePattern( jiraDatePattern );
 
-        issueDownloader.setJiraUser( jiraUser );
-
-        issueDownloader.setJiraPassword( jiraPassword );
+        if ( jiraServerId != null )
+        {
+            final Server server = mavenSession.getSettings().getServer( jiraServerId );
+            issueDownloader.setJiraUser( server.getUsername() );
+            issueDownloader.setJiraPassword( server.getPassword() );
+        }
+        else
+        {
+            issueDownloader.setJiraUser( jiraUser );
+            issueDownloader.setJiraPassword( jiraPassword );
+        }
 
         issueDownloader.setTypeIds( typeIds );
 
