1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  ·...

35
1Nov2010, Fall Member Mee2ng Chris Hyzer, Grouper developer

Transcript of 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  ·...

Page 1: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

1-­‐Nov-­‐2010,  Fall  Member  Mee2ng  

Chris  Hyzer,  Grouper  developer  

Page 2: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  Rules  •  Federated  users  •  CMU  permissions  users  •  uPortal  integra2on  •  Demo  of  Penn  Grouper/Rice  workflow  

2  –  11/2/10,  ©  2009  Internet2  

Page 3: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}
Page 4: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

4  –  11/2/10,  ©  2009  Internet2  

Page 5: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

5  –  11/2/10,  ©  2009  Internet2  

Page 6: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

6  –  11/2/10,  ©  2009  Internet2  

Page 7: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  Hooks  are  Java  plugins  •  Loader  is  cron  based  on  SQL  (or  soon  LDAP)  

•  Rules  are  like  hooks  – Rules  don’t  require  Java  – Rules  can  be  configured  by  end  users  – Rules  do  not  have  full  access  to  API  – Rules  can  run  as  a  daemon  too  

7  –  11/2/10,  ©  2009  Internet2  

Page 8: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  Quickly  configure  automa2c  ac2ons  in  Grouper  

•  End  users  can  control  their  own  rules  

8  –  11/2/10,  ©  2009  Internet2  

Page 9: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  If  a  subject  is  removed  from  the  employee  group,  it  will  be  removed  from  the  PayrollSystemUsers  group  

•  Nightly  remove  subjects  from  PayrollSystemUsers  who  are  not  employees  

9  –  11/2/10,  ©  2009  Internet2  

Page 10: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  If  a  subject  is  removed  from  the  employee  group,  all  payroll  system  permissions  will  be  removed  (e.g.  READ  Arts  and  Sciences  payroll  records)  

•  Nightly  remove  payroll  permissions  who  are  not  employees  

10  –  11/2/10,  ©  2009  Internet2  

Page 11: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  If  a  subject  is  removed  from  any  group  in  a  folder  in  part  of  the  org  structure,  it  will  be  removed  from  the  IT  admins  group  

•  Nightly  daemon  

•  “Composite  org  intersec2on  permissions”  is  same  for  permissions  

11  –  11/2/10,  ©  2009  Internet2  

Page 12: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  If  a  student  is  removed  from  a  group  for  English  110,  then  adach  an  end  date  on  the  English  110  wiki  group  for  one  week  from  now  

•  “Disabled-­‐date  permissions”  is  the  same  for  permissions  

12  –  11/2/10,  ©  2009  Internet2  

Page 13: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  Email  no2fica2on  on  fladened  membership  add  from  stem  

•  Email  no2fica2on  on  fladened  membership  remove  

•  Email  no2fica2ons  on  disabled  dates  (will  be  removed  5  days  from  now)  

•  Email  no2fica2ons  permissions  

•  Email  no2fica2ons  permissions  disabled  dates  

13  –  11/2/10,  ©  2009  Internet2  

Page 14: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  Inherited  privileges  on  adribute  defini2ons  •  Inherited  privileges  on  folders  •  Inherited  privileges  on  groups  •  Inherited  privileges  on  groups  with  a  name  padern  

•  E.g.  all  Groups  under  folder  school:courses  will  have  school:etc:courseReaders  with  READ  privilege  

14  –  11/2/10,  ©  2009  Internet2  

Page 15: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  Veto  if  not  eligible  (if  not  in  a  Group)  •  Veto  if  not  eligible  in  org  (if  not  in  a  Group  in  a  stem)  

•  Veto  permission  if  not  eligible  

15  –  11/2/10,  ©  2009  Internet2  

Page 16: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  API  •  API  abbreviated  (for  use  cases,  one  call  sets  all  adributes)  

•  WS  

•  client  

16  –  11/2/10,  ©  2009  Internet2  

Page 17: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}
Page 18: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  If  your  IdM  supports  federated  users,  use  that  

•  If  not,  you  can  use  Grouper  federated  (external)  users  

•  Similar  to  comanage  

•  Stores  some  iden2ty  informa2on  in  the  Grouper  DB  (or  pluggable  storage,  LDAP?)  

18  –  11/2/10,  ©  2009  Internet2  

Page 19: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

19  –  11/2/10,  ©  2009  Internet2  

Page 20: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString(externalSubject.name, ' - ', externalSubject.institution)}

externalSubjects.desc.manual = false

externalSubjects.calc.fields.cron = 0 0 3 * * ?

externalSubjects.name.required = true externalSubjects.email.required = false

externalSubjects.email.enabled = true

externalSubjects.searchStringFields = name, institution, identifier, uuid, email, jabber

externalSubjects.institution.required = false externalSubjects.institution.enabled = true

externalSubjects.attributes.jabber.friendlyName = Jabber ID

…  

20  –  11/2/10,  ©  2009  Internet2  

Page 21: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

21  –  11/2/10,  ©  2009  Internet2  

Page 22: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

22  –  11/2/10,  ©  2009  Internet2  

Page 23: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  We  will  make  a  UI  for  admins  to  query  external  users,  add,  edit,  delete  

•  Current  this  can  be  done  with  GSH/SQL  

23  –  11/2/10,  ©  2009  Internet2  

Page 24: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  Grouper  admins  can  be  no2fied  when  registra2ons  occur  

•  Inviters  can  be  no2fied  when  invitees  register  

•  All  accesses  are  audited  

24  –  11/2/10,  ©  2009  Internet2  

Page 25: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}
Page 26: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

26  –  11/2/10,  ©  2009  Internet2  

Rice request

Grouper Registry

grouperRice.jar

Rice server

Kuali DB

Grouper.client.properties

grouperClient.jar

Rice server Grouper WS server

Page 27: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

27  –  11/2/10,  ©  2009  Internet2  

Initiator starts workflow

Grouper Registry

Kuali DB

Get members to route

Grouper web services

Routes to approver group

Routes to approver group2

Final Add a member to a Grouper group/role and/or assign permissions

On login to Rice, get subject details

Archive the document data, and workflow history

One in group approves

1

2

3

4

Page 28: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  Pilo2ng  a  dozen  eForms  in  produc2on  •  Planning  a  rollout  of  more  forms  

•  Central  IT  will  convert  paper  forms  to  eForms  as  a  for-­‐fee  service  for  schools  and  centers  (details  not  final)  

•  Demo  movie  

•  Will  have  a  more  detailed  presenta2on  for  the  Kuali  Days  conference  

28  –  11/2/10,  ©  2009  Internet2  

Page 29: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}
Page 30: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  Similar  to  Kuali  Rice  integra2on  •  Secure  portlets  to  Grouper  groups  •  University  of  Chicago  ini2ally  developed  a  connector  

•  The  Grouper  team  and  Unicon  are  extending  it  

•  In  progress…  

30  –  11/2/10,  ©  2009  Internet2  

Page 31: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}
Page 32: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  CMU  has  a  billing  use  case  on  the  paccman  wiki  

•  Involves  Groups  /  Roles  /  Permissions  – Can  view  own  bill  – Can  delegate  access  to  bill  to  someone  else  

– Department  admins  can  view  bills  of  students  in  department  

– Billing  admins  can  view  all  bills  

32  –  11/2/10,  ©  2009  Internet2  

Page 33: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  Fully  implemented  on  the  Grouper  1.6.1  demo  server  

•  Command  line  client  which  runs  all  logic  over  web  services  using  the  grouper  client  

•  Test  data  is  loaded  in  server  •  All  commands  to  setup  the  permissions  /  roles  /  data  are  documented  on  the  paccman  wiki  

33  –  11/2/10,  ©  2009  Internet2  

Page 34: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

•  One  gap  is  centrally  hos2ng  the  decision  logic  (decision  point)  

•  Grouper  could  have  a  generic  Java  pluggable  decision  point  to  centrally  manage  logic  over  Grouper  WS  

34  –  11/2/10,  ©  2009  Internet2  

Page 35: 1Nov2010,)Fall)Member)Mee2ng) Chris)Hyzer,)Grouper)developer) · 11/1/2010  · externalSubjects.desc.el = ${grouperUtil.appendIfNotBlankString (externalSubject.name, ' - ', externalSubject.institution)}

1-­‐Nov-­‐2010,  Fall  Member  Mee2ng  Chris  Hyzer,  Grouper  developer  

For  more  informa2on,  visit  www.internet2.edu  

35  –  11/2/10,  ©  2009  Internet2