簡體   English   中英

如何為具有密碼授予類型的O​​Auth2.0服務器設置回調函數?

[英]How do I set a callback function for an OAuth2.0 Server with Password Grant Type?

我想知道是否有人可以幫助我,如何設置密碼授予類型回調? 我在本地主機上運行的OAuth2.0提供程序服務器正在運行,我只需要在請求訪問令牌時驗證用戶的憑據即可。

我相信我只需要設置一個回調函數。 附上我的代碼:

$app->setService('oauth', function() use ($config) {   
    $oauthdb = new \Twm\Db\Adapter\Pdo\Mssql(
            $config
            ->database
            ->oauth
            ->toArray()
    );

    $server = new \League\OAuth2\Server\Authorization(
        new \Oauth2\Server\Storage\Pdo\Mssql\Client($oauthdb),
        new \Oauth2\Server\Storage\Pdo\Mssql\Session($oauthdb),
        new \Oauth2\Server\Storage\Pdo\Mssql\Scope($oauthdb)
    );

    $request = new \Oauth2\Server\Storage\Pdo\Mssql\Request(); 
    $server->setRequest($request);

    // do i set a callback here???

    $server->setAccessTokenTTL(86400);
    $server->addGrantType(new League\OAuth2\Server\Grant\Password($server));
    return $server;
});

如果有人可以幫助我,我感激不盡,謝謝!

更新,所以我在這里閱讀了這個主題: https : //github.com/thephpleague/oauth2-server/issues/97看來我確實必須設置某種回調函數來驗證用戶。 我只需要更多幫助。

UPDATE

多虧了Alex,我實現了下面的密碼驗證例程,並且可以正常工作。

$app->setService('oauth', function() use ($config, $app) {   
    $oauthdb = new \Twm\Db\Adapter\Pdo\Mssql(
        (array) $config->database->oauth
    );

    $server = new \League\OAuth2\Server\Authorization(
        new \Oauth2\Server\Storage\Pdo\Mssql\Client($oauthdb),
        new \Oauth2\Server\Storage\Pdo\Mssql\Session($oauthdb),
        new \Oauth2\Server\Storage\Pdo\Mssql\Scope($oauthdb)
    );

    # Not required as it called directly from original code
    # $request = new \League\OAuth2\Server\Util\Request();

    # add these 2 lines code if you want to use my own Request otherwise comment it
    $request = new \Oauth2\Server\Storage\Pdo\Mssql\Request(); 
    $server->setRequest($request);
    $server->setAccessTokenTTL(86400);        
    $grant = new League\OAuth2\Server\Grant\Password();
    $grant->setVerifyCredentialsCallback(function($username, $password){
        //echo "it works! ". $username . ' : ' . $password;        
        // if verified, then return true
        // else return false
    });
    $server->addGrantType($grant);        
    return $server;
});

您需要在授予上調用setVerifyCredentialsCallback($callback)方法。

因此,請稍稍更改您的代碼:

$request = new \Oauth2\Server\Storage\Pdo\Mssql\Request(); 
$server->setRequest($request);
$server->setAccessTokenTTL(86400);

$grant = new League\OAuth2\Server\Grant\Password($server);
$grant->setVerifyCredentialsCallback(function ($username, $password) {

   // your logic here - must return a user ID if credentials are valid or false if not

});

$server->addGrantType();
return $server;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM