def openid2_get_redirect(request, provider, callback, scope, mode):
	xrds = urllib.urlopen(providers[provider]["xrds"])
	if xrds.getcode() != 200:
		raise Exception("OpenID Failed: Invalid response from " + providers[provider]["displayname"] + " on obtaining a XRDS information: " + xrds.read())
	xrds = xrds.read()
	
	from openid.consumer.consumer import Consumer
	from openid.consumer.discover import OpenIDServiceEndpoint
	from openid.store.memstore import MemoryStore
	
	service =  OpenIDServiceEndpoint.fromXRDS(providers[provider]["xrds"], xrds)[0]
	
	consumer = Consumer(request.session, MemoryStore())
	
	auth = consumer.beginWithoutDiscovery(service)
	
	if "extensions" in providers[provider]:
		for ext, d in providers[provider]["extensions"].iteritems():
			for k, v in d.iteritems():
				auth.addExtensionArg(ext, k, v) 
				
	if mode == "compact": # works with Google
		auth.addExtensionArg("http://specs.openid.net/extensions/ui/1.0", "mode", "popup")
	
	return auth.redirectURL(realm=SITE_ROOT_URL, return_to=callback)
Ejemplo n.º 2
0
def openid2_get_redirect(request, provider, callback, scope, mode):
    xrds = urllib.request.urlopen(providers[provider]["xrds"])
    if xrds.getcode() != 200:
        raise Exception("OpenID Failed: Invalid response from " +
                        providers[provider]["displayname"] +
                        " on obtaining a XRDS information: " + xrds.read())
    xrds = xrds.read()

    from openid.consumer.consumer import Consumer
    from openid.consumer.discover import OpenIDServiceEndpoint

    service = OpenIDServiceEndpoint.fromXRDS(providers[provider]["xrds"],
                                             xrds)[0]

    consumer = Consumer(request.session, openid_store)

    auth = consumer.beginWithoutDiscovery(service)

    if "extensions" in providers[provider]:
        for ext, d in providers[provider]["extensions"].items():
            for k, v in d.items():
                auth.addExtensionArg(ext, k, v)

    if mode == "compact":  # works with Google
        auth.addExtensionArg("http://specs.openid.net/extensions/ui/1.0",
                             "mode", "popup")

    return auth.redirectURL(realm=settings.SITE_ROOT_URL, return_to=callback)
Ejemplo n.º 3
0
def create_service():
    endpoint_type = 'production' if mojeid_settings.MOJEID_INSTANCE_PRODUCTION \
                    else 'testing'
    defs = mojeid_services[endpoint_type]
    return OpenIDServiceEndpoint.fromXRDS(defs['url'], defs['xrds'])[0]
Ejemplo n.º 4
0
def create_service():
    endpoint_type = 'production' if mojeid_settings.MOJEID_INSTANCE_PRODUCTION \
                    else 'testing'
    defs = mojeid_services[endpoint_type]
    return OpenIDServiceEndpoint.fromXRDS(defs['url'], defs['xrds'])[0]