当前位置: 首页 > 知识库问答 >
问题:

LARAVEL PHP应用程序中的Microsoft Graph-oauth2授予方法“密码”

韩博厚
2023-03-14

i'am using a LARAVEL PHP application is trying to get a token from Microsoft GRAPH API。实际上,通过使用OAuth2授权代码授予方法,我可以很容易地获得令牌。

方法如下:https://github.com/microsoftgraph/microsoft-graph-docs/blob/master/concepts/php.md

但使用此方法会将浏览器重定向到Microsoft身份验证网页,我不希望这样。我想要一个没有任何浏览器重定向的透明方法。

以下是获得令牌的所有Oauth2 grant方法:https://alexbilbie.com/guide-to-oauth-2-grants

所以我想使用“资源所有者凭据授予”获得令牌。这是我的代码:

    $provider = new \League\OAuth2\Client\Provider\GenericProvider([    
    'clientId'          => 'b9e6844b-b20c-4eef-bbff-fa052c1c0f94',
    'clientSecret'      => '1A8yUUcMaD5Zdv1dgwqy3SR',
    'redirectUri'       => 'https://my-website-url/oauth',
    'urlAuthorize'    => 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
    'urlAccessToken'    => 'https://login.microsoftonline.com/common/oauth2/v2.0/token',
    'urlResourceOwnerDetails'    => '',
    'scopes'                  => 'openid email profile' //  Admin restricted scopes : Directory.Read Directory.ReadWrite Groups.Read.All
]);

$accessToken = $provider->getAccessToken('password',[
    'username' => 'myaccount@assystem.com',
    'password' => 'xxxxx'
]);

但我有以下错误:

(1/1)GenericProvider.php中的IdtyProviderExceptioninvalid_grant(第217行)

有什么帮助吗?

共有1个答案

端木野
2023-03-14

获得错误异常后,我知道为什么会出现此错误:

    try {
    // Try to get an access token using the resource owner password credentials grant.
    $accessToken = $provider->getAccessToken('password', [
        'username' => 'myapp@assystem.com',
        'password' => 'mypassword'
    ]);
} catch (\League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) {

    // Failed to get the access token
    throw $e;
}

'错误\u说明'=

 类似资料:
  • 我一直在广泛阅读有关OAuth和OpenID Connect的内容,但此问题专门涉及OAuth2资源所有者密码授予(又名OAuth2资源所有者凭据授予,又名OAuth2密码授予) 某些资源(例如Justin Richer的《OAuth2 in Action》一书)说不要使用OAuth2资源所有者密码授予进行身份验证-请参阅书中的第6.1.3节。 以下其他好资源都说我们可以使用OAuth2资源所有者

  • 问题内容: 我正在使用一组受oAuth2保护的服务。当前它是这样工作的:客户端使用其用户名和密码登录。我用这些交换令牌。我将令牌保存在会话中,并在每次调用服务时提交。它可以工作,但是问题是我完全手动执行此操作,而没有使用很多Spring Security oAuth2支持。外观如下: 如您所见,我自己创建了身份验证提供程序。它正在接受该标准,但正在产生自己的扩展,该扩展也保留了实际内容,因此将其保

  • 我想在我的应用程序。如果已授予在android中不显示这是我的代码 @override public void onRequestPermissionsResult(int requestCode,String permissions[],int[]grantResults){

  • 应用程序需要连接到仅支持OAuth2资源所有者密码凭据授予的API。我尝试使用下面的代码,但得到的响应代码为400“错误请求”。使用相同的代码,我可以连接到一个正常的网站并检索内容。 我知道API代码是工作,因为使用邮递员工作。在邮递员中,我只是发出一个帖子请求,提供用户名、密码和grant_type,并使用x-www. form-urlencoded 连接的返回是一个json。 你知道怎么了吗?

  • null 用户在登录表单中输入凭据->应用程序1将使用用户凭据从应用程序2获取令牌,其具有密码授予类型->使用令牌访问应用程序1的资源。 问题是Spring Security 5是否支持客户端的密码授予类型?我在Spring Security 5实现中找到了所有rest授予类型,但没有找到密码。

  • 我们已经实现了 OAuth2 授权服务器(和身份提供程序)。现在,我们要执行负载测试来衡量系统性能。 我现在遇到的具体问题是,我想对授权代码流进行负载测试。到目前为止我一直在用JMeter。但是我不知道如何为所需的redirect_uri提供一个endpoint来完成这个流程。到底有没有办法做到这一点,还是我运气不好?谷歌帮不上忙。如果JMeter做不到,有没有工具可以?