diff --git a/SoObjects/SOGo/SOGoSAML2Session.h b/SoObjects/SOGo/SOGoSAML2Session.h new file mode 100644 index 000000000..dbfbe0664 --- /dev/null +++ b/SoObjects/SOGo/SOGoSAML2Session.h @@ -0,0 +1,41 @@ +/* SOGoSAML2Session.h - this file is part of SOGo + * + * Copyright (C) 2012 Inverse inc. + * + * Author: Wolfgang Sourdeau + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef SOGOSAML2SESSION_H +#define SOGOSAML2SESSION_H + +/* implementation of the SAML2 protocol as required for a client: + https://www.oasis-open.org/standards#samlv2.0 */ + +#import + +@class NSString; + +@interface SOGoSAML2Session : NSObject +{ +} + ++ (NSString *) metadataInContext: (WOContext *) context; + +@end + +#endif /* SOGOSAML2SESSION_H */ diff --git a/SoObjects/SOGo/SOGoSAML2Session.m b/SoObjects/SOGo/SOGoSAML2Session.m new file mode 100644 index 000000000..57e5d8623 --- /dev/null +++ b/SoObjects/SOGo/SOGoSAML2Session.m @@ -0,0 +1,61 @@ +/* SOGoSAML2Session.m - this file is part of SOGo + * + * Copyright (C) 2012 Inverse inc. + * + * Author: Wolfgang Sourdeau + * + * This file is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#import +#import +#import + +#import +#import +#import +#import + +#import "SOGoSAML2Session.h" + +@implementation SOGoSAML2Session + ++ (NSString *) metadataInContext: (WOContext *) context +{ + NSString *metadata, *serverURLString, *filename, *appName; + NSBundle *bundle; + NSURL *serverURL; + + bundle = [NSBundle bundleForClass: self]; + filename = [bundle pathForResource: @"SOGoSAML2Metadata" ofType: @"xml"]; + if (filename) + { + appName = [[WOApplication application] name]; + serverURL = [NSURL URLWithString: [NSString stringWithFormat: @"/%@/so", + appName] + relativeToURL: [context serverURL]]; + serverURLString = [serverURL absoluteString]; + metadata = [[NSString stringWithContentsOfFile: filename] + stringByReplacingString: @"%{base_url}" + withString: serverURLString]; + } + else + metadata = nil; + + return metadata; +} + +@end