2017-02-09 41 views
1

Я пытаюсь создать приложение ASP.NET с авторизацией сайта Stormpath ID. Я создаю запрос и ответ и успешно получил учетную запись.Как обрабатывать Stormpath ID Site JWT response

Но что дальше? Как сообщить программе, что пользователь аутентифицирован?

public async Task<RedirectResult> Callback(string jwtResponse) 
{ 
    var client = Request.GetStormpathClient(); 
    var app = await client.GetApplicationAsync(appUrl); 
    var requestDescriptor = HttpRequests.NewRequestDescriptor() 
    .WithMethod("GET") 
    .WithUri("http://localhost:50084/Auth/Callback?jwtResponse=" + jwtResponse) 
    .Build(); 
    var idSiteListener = app.NewIdSiteAsyncCallbackHandler(requestDescriptor); 
    var accountResult = await idSiteListener.GetAccountResultAsync(); 
    var account = accountResult.GetAccountAsync().Result; //Account 
    //What I must do here to tell application that user is authenticated 
    return Redirect("/"); 
} 

ответ

0

Вместо того, чтобы счета от ответа ID сайта, вы можете обменять JWT для маркеров доступа Stormpath:

public async Task<RedirectResult> Callback(string jwtResponse) 
{ 
    var client = Request.GetStormpathClient(); 
    var app = await client.GetApplicationAsync(appUrl); 

    var exchangeRequest = new StormpathTokenGrantRequest 
    { 
     Token = jwtResponse 
    }); 

    var grantResponse = await application.ExecuteOauthRequestAsync(exchangeRequest); 

    // Return grantResponse.AccessTokenString in a secure HTTPOnly cookie, or as a JSON response 
} 

Если вы используете Stormpath ASP.NET plugin, вы можете enable ID Site и это будет обрабатываться для вас автоматически.

Отказ от ответственности: Я автор пакета.