ServiceStack и Auth0

Я ищу использовать Auth0 в качестве поставщика аутентификации для ServiceStack. Существует отличный пример приложения, задокументированного на Auth0, который применяется и хорошо работает при работе с ServiceStack и использованием ServiceStack.Host.MVC: https://auth0.com/docs/quickstart/webapp/servicestack/01-login.

Однако я не знаю, как создать URL-адрес авторизации и перенаправить пользователя на этот URL-адрес в сценарии, в котором я НЕ использую MVC и AccountController для перенаправления пользователя. Как я могу создать URL перенаправления, используя плагин ServiceStack Auth, если я хочу повторить логику в соответствии с примером кода MVC ниже:

public class AccountController : Controller
{
  public ActionResult Login()
  {
    string clientId = WebConfigurationManager.AppSettings["oauth.auth0.AppId"];
    string domain = WebConfigurationManager.AppSettings["oauth.auth0.OAuthServerUrl"].Substring(8);

    var redirectUri = new UriBuilder(this.Request.Url.Scheme, this.Request.Url.Host, this.Request.Url.IsDefaultPort ? -1 : this.Request.Url.Port, "api/auth/auth0");

    var client = new AuthenticationApiClient(new Uri($"https://{domain}"));
    var authorizeUrlBuilder = client.BuildAuthorizationUrl()
        .WithClient(clientId)
        .WithRedirectUrl(redirectUri.ToString())
        .WithResponseType(AuthorizationResponseType.Code)
        .WithScope("openid profile")
        .WithAudience($"https://{domain}/userinfo");


    return Redirect(authorizeUrlBuilder.Build().ToString());
 }
}

1 ответ

Для всех, кто заинтересован, вот решение, которое я в итоге принял.

шаги:

1) Создайте плагин Auth0 (см. Суть здесь)

2) Зарегистрируйте плагин в вашем AppHost.

Plugins.Add(new AuthFeature(() => new Auth0UserSession(), new IAuthProvider[] {
    new Auth0Provider(appSettings,appSettings.GetString("oauth.auth0.OAuthServerUrl"))
}));

3) Добавьте соответствующие ключи в ваш Web.Config.

<appSettings>
   <add key="oauth.auth0.OAuthServerUrl" value="https://xxxxxxx.auth0.com" />
   <add key="oauth.auth0.AppId" value="xxxxxx" />
   <add key="oauth.auth0.AppSecret" value="xxxxxxx" />
</appSettings>
Другие вопросы по тегам