14:33:17 #startmeeting 14:33:17 Meeting started Sun Aug 11 14:33:17 2013 UTC. The chair is mizmo. Information about MeetBot at http://wiki.debian.org/MeetBot. 14:33:17 Useful Commands: #action #agreed #halp #info #idea #link #topic. 14:33:28 first let me tell you about different parts required for openid 14:33:34 there's the provider, the server that hosts the openid 14:33:46 the web app that hosts the identiy, the url of the website 14:33:55 then the relying party - the website where the user is trying to log in 14:34:25 the user goes to open id relying party 14:34:30 click on log in button 14:34:37 gets redirected to the open id provider 14:34:44 the user auths to the provider 14:34:55 the provider redirect them to the relying party as authenticated 14:34:56 demo 14:35:12 he's going to ask.fedoraproject.org 14:35:18 ask.fedoraproject.org is the relying party 14:35:20 clicks on login 14:35:26 clicks 'open id' 14:36:13 forwards you to the open id provider 14:36:17 which is the fedora open id provider 14:36:27 as you can see, the url here - this is no longer ask.fedoraproject.org 14:36:48 now you're returned to the website you came from 14:36:54 and as you can see, it recognizes me as a valid user 14:36:59 without prompting me for a password here 14:37:12 but it's not as simple as it seems 14:37:21 this is all the user will see, but there are some probs with impementing this 14:37:33 1) how do you know as the consumer where to redirect the user for auth? 14:37:46 2) how does the consumer know for sure the user didn't just browse to its return page claming to be authenticated 14:37:48 ? 14:37:58 well, for the first part - 14:38:14 the consumer does a request to the url the user provider 14:38:38 it's a stateful operation 14:38:46 ebfore redirecting the consumer/relying party and provider exchange a key 14:38:53 that they use later on to verify that info is provider by the provider 14:39:06 otherwise you'd be able to send a req to openid saying you were auth'ed without provider knowing about it 14:39:11 the other way is stateless 14:39:34 where the consumer and providing party... the provider generates a key and returnsi n the resonse 14:39:44 whatever happens, the response is validated by requesting a check against thep rovider 14:39:47 yes this is correct 14:39:54 that's the basi cprocess of open id 14:40:02 but in the fedora services group we have some extra features 14:40:16 we also want to provider other services when you log in 14:40:31 if you want to ask the person's email address, then it will ask that and you can provide it 14:40:39 simple registration - provides inf oback to relying party - 14:40:45 nickname, email, time zone 14:40:57 this will prefill your registration details on the relying party site 14:41:06 another website which accepts open id is... 14:41:09 i cant see it, stream is burry 14:41:11 blurry 14:41:16 stackoverflow 14:41:20 ah okay thanks 14:41:40 fedora openid allows this information, asks which information would you like to return to the original website 14:41:57 so if stack overflow asked my name or email address it would show up here 14:42:03 and ask me if i wantd to provide it to the other website 14:42:11 back to stack overrflow... i am authenticated 14:42:52 q: info provided, is there a restriction or can we add more information? 14:43:06 q: there's always a name? 14:43:09 a: yes name is always there 14:43:24 a: not coming from openid by default, comes from registration extension 14:43:47 a: also info exchange extension - more general a lot more things... but we dont use it, this info is all we need 14:44:02 a: the registration extension a way to exchange more general info about a user 14:44:08 next extension we have is provider extension 14:44:17 provider can say to relying party 14:44:31 username and password or more sure of this user because i've used OTP and approved OTP 14:44:48 relying party can use this to determine sensitive/confidential information provided 14:45:18 relying party can require OTP to trust user - if no OTP won't trust user at all 14:45:30 relying party can also require things like, user must have authenticated within past 5 minutes 14:45:50 make sure the user is at the keyboard 14:46:36 another extension - teams 14:46:41 provide group memebership information about users 14:46:52 for example, if app wants to know if you're a packager 14:47:03 you may get access to a number of features - like create an update - if it knows you're a packager 14:47:08 by default in openid thats not possible 14:47:13 that's why we implemented the teams extesnion 14:47:16 to provide group info 14:47:37 relying party can ask, can you tell me when user logs in if they're a memeber of packager or sys admin 14:48:01 q: if youre a packager... 14:48:22 a: provider is still going to authenticate you if you're not, but it will not say you're a packager. so the groups metadata will be empty 14:48:35 demo 14:49:03 jenkins instance of the infrastructure 14:49:46 right now the number of options here is limited 14:50:18 i will say... let's add this test account to the group 14:50:21 this is a group that has admin access 14:50:33 the next time i log in to jenkins, 14:50:56 14:51:07 in tht ejenkins group, now i have access to more permissions on jenkins 14:51:15 so that's where we use this extension 14:51:33 another piece of info we require is whether or not the user signed the CLA 14:51:44 need to know if user signed the CLA and is allowed to do certain things 14:52:03 so we wrote this extension 14:52:06 defined by fedora team 14:52:15 q: why is it not using the group extension? 14:52:34 a: we wanted to separate it - we have groups for cla stuff but there's no way to get additional information about a group, if its a cla group or not 14:52:50 q: but if you can request if a person is in a certain group why not request if in cla group? 14:53:01 a: dont want to provide cla information, don't know if cla group or not 14:53:13 a: we can't send the type of the group, have to guess on the group name, but might not always be true 14:53:31 a: we want to know if member of signed cla group (there are many cla groups) 14:53:48 now i'm going to tell you about our current state 14:54:05 account system servers 14:54:22 requires us to keep the api into the account system, always have the application ask for a password which it then sends off to the acct system 14:54:32 only openid should ask for password 14:54:38 then easier to add things like an otp system 14:54:48 current openid provider was rewritten from scratch 14:54:56 old one had issues, was rewritten from scratch 14:55:00 rewrote 6 months ago 14:55:14 running without any major problems so far 14:55:20 ive been using it a lot so i know it's pretty much stable now 14:55:28 now we have that we're starting to convert services over 14:55:30 so far we have 14:55:36 fedorahosted, COPR, tagger, hyperkitty, and jenkins 14:55:49 (hyperkitty is still in development) 14:55:56 currently in process of migrating bodhi, pkgdb, elections, etc. 14:55:58 summary 14:56:15 we're trying to centralize our authentication so apps don't need to ask passwords in orer to get info they need to operate 14:56:32 if website supports extension, they can request the info and user can say what info they want to submit 14:56:38 questions? 14:57:08 #info if you have questions, contact patrick@fedoraproject.org 14:57:10 q: extension... communication between the provider and the application, it's only after user logs in? 14:57:21 a: yes stateful operation - they exchange a key before, redirects user to auth 14:57:32 a: with stateless mode that key exchange is done afterwards so consumer does not need to store it 14:57:38 any other questions? 14:57:43 none from irc so far 14:57:51 thank you for your attention, and enjoy the rest of flock! 14:57:52 14:57:55 #endmeeting