From 01793ec57f1aa275da203dd8bfed388ee17a1a57 Mon Sep 17 00:00:00 2001 From: Amanda Anganes Date: Fri, 6 Jul 2012 16:02:11 -0400 Subject: [PATCH] added preferred_username claim to userinfo endpoint --- .../openid/connect/model/DefaultUserInfo.java | 19 +++++++++++++++---- .../mitre/openid/connect/model/UserInfo.java | 12 +++++++++++- openid-connect-server/db/tables/userinfo.sql | 1 + .../openid/connect/view/JSONUserInfoView.java | 2 +- .../openid/connect/view/POCOUserInfoView.java | 2 +- 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/openid-connect-common/src/main/java/org/mitre/openid/connect/model/DefaultUserInfo.java b/openid-connect-common/src/main/java/org/mitre/openid/connect/model/DefaultUserInfo.java index 1056d8e61..2dc19b4d1 100644 --- a/openid-connect-common/src/main/java/org/mitre/openid/connect/model/DefaultUserInfo.java +++ b/openid-connect-common/src/main/java/org/mitre/openid/connect/model/DefaultUserInfo.java @@ -20,16 +20,12 @@ import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToOne; import javax.persistence.Table; -import com.google.gson.JsonObject; - @Entity @Table(name="userinfo") @NamedQueries({ @@ -38,6 +34,7 @@ import com.google.gson.JsonObject; public class DefaultUserInfo implements UserInfo { private String userId; + private String preferredUsername; private String name; private String givenName; private String familyName; @@ -72,6 +69,20 @@ public class DefaultUserInfo implements UserInfo { public void setUserId(String userId) { this.userId = userId; } + /* (non-Javadoc) + * @see org.mitre.openid.connect.model.UserInfo#getPreferredUsername + */ + @Override + public String getPreferredUsername() { + return this.preferredUsername; + } + /* (non-Javadoc) + * @see org.mitre.openid.connect.model.UserInfo#setPreferredUsername(java.lang.String) + */ + @Override + public void setPreferredUsername(String preferredUsername) { + this.preferredUsername = preferredUsername; + } /* (non-Javadoc) * @see org.mitre.openid.connect.model.UserInfo#getName() */ diff --git a/openid-connect-common/src/main/java/org/mitre/openid/connect/model/UserInfo.java b/openid-connect-common/src/main/java/org/mitre/openid/connect/model/UserInfo.java index af3f58999..b003f4a95 100644 --- a/openid-connect-common/src/main/java/org/mitre/openid/connect/model/UserInfo.java +++ b/openid-connect-common/src/main/java/org/mitre/openid/connect/model/UserInfo.java @@ -5,7 +5,6 @@ import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; -import javax.persistence.JoinColumn; import javax.persistence.OneToOne; @Entity @@ -22,6 +21,17 @@ public interface UserInfo { * @param userId the userId to set */ public abstract void setUserId(String userId); + + /** + * @return the preferred username + */ + @Basic + public abstract String getPreferredUsername(); + + /** + * @param preferredUsername the preferredUsername to set + */ + public abstract void setPreferredUsername(String preferredUsername); /** * @return the name diff --git a/openid-connect-server/db/tables/userinfo.sql b/openid-connect-server/db/tables/userinfo.sql index 373169080..c05f4e989 100644 --- a/openid-connect-server/db/tables/userinfo.sql +++ b/openid-connect-server/db/tables/userinfo.sql @@ -1,6 +1,7 @@ CREATE TABLE userinfo ( id BIGINT AUTO_INCREMENT PRIMARY KEY, userId VARCHAR(256), + preferredUsername VARCHAR(256), name VARCHAR(256), givenName VARCHAR(256), familyName VARCHAR(256), diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/view/JSONUserInfoView.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/view/JSONUserInfoView.java index a5c9df119..65cb4e122 100644 --- a/openid-connect-server/src/main/java/org/mitre/openid/connect/view/JSONUserInfoView.java +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/view/JSONUserInfoView.java @@ -77,6 +77,7 @@ public class JSONUserInfoView extends AbstractView{ if (scope.contains("profile")) { obj.addProperty("name", ui.getName()); + obj.addProperty("preferred_username", ui.getPreferredUsername()); obj.addProperty("given_name", ui.getGivenName()); obj.addProperty("family_name", ui.getFamilyName()); obj.addProperty("middle_name", ui.getMiddleName()); @@ -88,7 +89,6 @@ public class JSONUserInfoView extends AbstractView{ obj.addProperty("zone_info", ui.getZoneinfo()); obj.addProperty("locale", ui.getLocale()); obj.addProperty("updated_time", ui.getUpdatedTime()); - // TODO: preferred_username } if (scope.contains("email")) { diff --git a/openid-connect-server/src/main/java/org/mitre/openid/connect/view/POCOUserInfoView.java b/openid-connect-server/src/main/java/org/mitre/openid/connect/view/POCOUserInfoView.java index fbf6ac8bb..d50d27db0 100644 --- a/openid-connect-server/src/main/java/org/mitre/openid/connect/view/POCOUserInfoView.java +++ b/openid-connect-server/src/main/java/org/mitre/openid/connect/view/POCOUserInfoView.java @@ -100,7 +100,7 @@ public class POCOUserInfoView extends AbstractView{ } entry.addProperty("gender", ui.getGender()); - // TODO: preferred_username + entry.addProperty("preferredUsername", ui.getPreferredUsername()); if(ui.getPicture() != null){ JsonObject photo = new JsonObject(); photo.addProperty("value", ui.getPicture());