IdentityServer4 link 直接到Facebook认证
IdentityServer4 link directly to Facebook authentication
我有一个集成了 Facebook 的 IdentityServer4 应用程序,它工作正常。
我还有一个使用 IdentityServer 的 Angular2 应用程序。目前,如果用户想通过 Facebook 登录,他们必须单击 'login',这会将他们带到 IdentityServer,然后单击 Facebook 按钮。
我想在我的 Angular 应用程序上有一个 'Facebook' 按钮,然后自动将他们直接重定向到 Facebook,绕过主登录屏幕。
我注意到代码中的以下行:
public async Task<IActionResult> Login(string returnUrl)
{
...
if (vm.IsExternalLoginOnly)
{
// only one option for logging in
return ExternalLogin(vm.ExternalProviders.First().AuthenticationScheme, returnUrl);
}
...
}
这基本上就是我想要的,自动重定向到 Facebook。所以我添加了以下方法:
public async Task<IActionResult> FacebookLogin(string returnUrl)
{
var vm = await _account.BuildLoginViewModelAsync(returnUrl);
// only one option for logging in
return ExternalLogin(vm.ExternalProviders.First(x => x.DisplayName.ToUpper() == "FACEBOOK").AuthenticationScheme, returnUrl);
}
虽然这会直接重定向到 Facebook 并进行身份验证,但它不会重定向回调用应用程序。我可以看到有关无效 redirectUri 的错误记录,我认为这是因为我没有调用 connect/authorize
?
那么有没有办法将附加参数传递给 connect/authorize
以指定使用 Facebook 然后我可以在我的控制器中使用它,或者调用不同的方法?
谢谢
OIDC规范中已经有这样的规定,IdentityServer4确实支持。
在 Angular2 oidc-client 配置中包含 acr_values
参数。像这样的值应该告诉身份服务器将您的请求转发到身份提供者:"idp:oidc-facebook"。当然,该 IdP 需要在您的 IdentityServer 实例中注册。
我有一个集成了 Facebook 的 IdentityServer4 应用程序,它工作正常。
我还有一个使用 IdentityServer 的 Angular2 应用程序。目前,如果用户想通过 Facebook 登录,他们必须单击 'login',这会将他们带到 IdentityServer,然后单击 Facebook 按钮。
我想在我的 Angular 应用程序上有一个 'Facebook' 按钮,然后自动将他们直接重定向到 Facebook,绕过主登录屏幕。
我注意到代码中的以下行:
public async Task<IActionResult> Login(string returnUrl)
{
...
if (vm.IsExternalLoginOnly)
{
// only one option for logging in
return ExternalLogin(vm.ExternalProviders.First().AuthenticationScheme, returnUrl);
}
...
}
这基本上就是我想要的,自动重定向到 Facebook。所以我添加了以下方法:
public async Task<IActionResult> FacebookLogin(string returnUrl)
{
var vm = await _account.BuildLoginViewModelAsync(returnUrl);
// only one option for logging in
return ExternalLogin(vm.ExternalProviders.First(x => x.DisplayName.ToUpper() == "FACEBOOK").AuthenticationScheme, returnUrl);
}
虽然这会直接重定向到 Facebook 并进行身份验证,但它不会重定向回调用应用程序。我可以看到有关无效 redirectUri 的错误记录,我认为这是因为我没有调用 connect/authorize
?
那么有没有办法将附加参数传递给 connect/authorize
以指定使用 Facebook 然后我可以在我的控制器中使用它,或者调用不同的方法?
谢谢
OIDC规范中已经有这样的规定,IdentityServer4确实支持。
在 Angular2 oidc-client 配置中包含 acr_values
参数。像这样的值应该告诉身份服务器将您的请求转发到身份提供者:"idp:oidc-facebook"。当然,该 IdP 需要在您的 IdentityServer 实例中注册。