。AddOAuth()与.AddOpenIdConnect()

问题描述 投票:0回答:1

人,

您能为我说明这两种方法的区别和目的是什么:

  1. Microsoft.Extensions.DependencyInjection.OAuthExtensions.AddOAuth();
  2. Microsoft.Extensions.DependencyInjection.OpenIdConnectExtensions.AddOpenIdConnect()。

根据名称,一个用于授权,另一个用于验证用户,对吗?因此,如果我的mvc应用程序需要知道谁是谁,我需要使用.AddOpenIdConnect()来获取id_token吗?如果我需要代表当前用户从mvc应用程序调用资源服务,则需要添加.AddOAuth()以获得access_token

使用auth0.com进行的实验表明,使用.AddOAuth()的代码能够获取访问令牌,这是HttpContext.GetTokenAsync("access_token")的结果,但是如果使用HttpContext.GetTokenAsync("id_token"),则不会获得访问令牌。

反之亦然-.AddOpenIdConnect()可以获取id_token,但没有access_token。

两者的配置均相等:

.AddOAuth("oauth", o =>
            {
                o.AuthorizationEndpoint = "https://<Realm>.auth0.com/authorize?audience=resourceAPI-server";
                o.TokenEndpoint = "https://<REALM>.auth0.com/oauth/token";
                o.ClientId = "<clientID>";
                o.ClientSecret = "<secret>";
                o.CallbackPath = "/cb_oauth";
                o.SaveTokens = true;

            })
            .AddOpenIdConnect("openIdConnect", o =>
            {
                o.Authority = "https://<REALM>.auth0.com";
                o.ClientId = "<clientID>";
                o.ClientSecret = "<secret>";
                o.CallbackPath = "/cb_openIdConnect";
                o.SaveTokens = true;
                o.Events =new OpenIdConnectEvents()
                {
                    OnRedirectToIdentityProvider = rc =>
                    {
                        rc.ProtocolMessage.SetParameter("audience","resourceAPI-server");
                        return Task.CompletedTask;
                    }
                };
            })

这真的很奇怪,因为我可以在邮递员中同时获得带有代码流和作用域openid email profile的令牌(访问和ID)。>>

auth0.com上的教程还显示具有附加作用域的.AddOpenIdConnect()也可以获取访问令牌。非常令人困惑。

那么,哪种情况适合?

人们,能否为我澄清这两种方法的区别和目的:Microsoft.Extensions.DependencyInjection.OAuthExtensions.AddOAuth(); Microsoft.Extensions.DependencyInjection ....

asp.net-core oauth-2.0 openid-connect
1个回答
0
投票

OAuth 2.0框架描述了用于授予授权的总体模式,但未定义如何实际执行身份验证。

© www.soinside.com 2019 - 2024. All rights reserved.