aboutsummaryrefslogtreecommitdiffstats
path: root/Zotlabs/Module/Owa.php
diff options
context:
space:
mode:
Diffstat (limited to 'Zotlabs/Module/Owa.php')
-rw-r--r--Zotlabs/Module/Owa.php36
1 files changed, 16 insertions, 20 deletions
diff --git a/Zotlabs/Module/Owa.php b/Zotlabs/Module/Owa.php
index 0b625dbe5..4b0d855c5 100644
--- a/Zotlabs/Module/Owa.php
+++ b/Zotlabs/Module/Owa.php
@@ -1,15 +1,24 @@
<?php
-
namespace Zotlabs\Module;
-
+/**
+ * OpenWebAuth verifier and token generator
+ * See https://macgirvin.com/wiki/mike/OpenWebAuth/Home
+ * Requests to this endpoint should be signed using HTTP Signatures
+ * using the 'Authorization: Signature' authentication method
+ * If the signature verifies a token is returned.
+ *
+ * This token may be exchanged for an authenticated cookie.
+ */
class Owa extends \Zotlabs\Web\Controller {
function init() {
- foreach([ 'REDIRECT_REMOTE_USER', 'HTTP_AUTHORIZATION' ] as $head) {
+ $ret = [ 'success' => false ];
+
+ foreach([ 'REDIRECT_REMOTE_USER', 'HTTP_AUTHORIZATION' ] as $head) {
if(array_key_exists($head,$_SERVER) && substr(trim($_SERVER[$head]),0,9) === 'Signature') {
if($head !== 'HTTP_AUTHORIZATION') {
$_SERVER['HTTP_AUTHORIZATION'] = $_SERVER[$head];
@@ -27,31 +36,18 @@ class Owa extends \Zotlabs\Web\Controller {
);
if($r) {
$hubloc = $r[0];
- $verified = \Zotlabs\Web\HTTPSig::verify('',$hubloc['xchan_pubkey']);
-
-logger('verified: ' . print_r($verified,true));
-
+ $verified = \Zotlabs\Web\HTTPSig::verify('',$hubloc['xchan_pubkey']);
if($verified && $verified['header_signed'] && $verified['header_valid']) {
+ $ret['success'] = true;
$token = random_string(32);
\Zotlabs\Zot\Verify::create('owt',0,$token,$r[0]['hubloc_addr']);
- $x = json_encode([ 'success' => true, 'token' => $token ]);
- header('Content-Type: application/x-zot+json');
- echo $x;
- killme();
+ $ret['token'] = $token;
}
}
}
}
- $x = json_encode([ 'success' => false ]);
- header('Content-Type: application/x-zot+json');
- echo $x;
- killme();
}
}
-
- $x = json_encode([ 'success' => false ]);
- header('Content-Type: application/x-zot+json');
- echo $x;
- killme();
+ json_return_and_die($ret,'application/x-zot+json');
}
}