Почему веб-приложения более популярны, чем локальные приложения?

Вы не опубликовали свой код в своем вопросе, поэтому я не знаю, как вы создаете JWT для подписи.

[ПРАВИТЬ 1/18/2019 после добавления кода к вопросу]

Ваш код выполняет обратную подпись . Вы создаете подпись и пытаетесь прикрепить ее к JWT Headers + Payload. Вместо этого вы хотите взять JWT Headers + Payload и подписать эти данные, а затем прикрепить подпись к JWT, чтобы создать Signed-JWT.

Код Psuedo, используя ваш исходный код:

body_b64 = base64url(JSON.stringify(header)) + "." + base64url(JSON.stringify(payload))

signature = sign(body_b64, name);

jwt = body_b64 + '.' + base64url(signature)

Примечание: я не уверен, какой формат данных возвращает подпись signatureObject["0"].signature. Возможно, вам придется преобразовать это перед преобразованием в base64.

[END EDIT]

Пример данных:

Заголовок JWT:

{
    alg: RS256
    kid: 0123456789abcdef62afcbbf01234567890abcdef
    typ: JWT
}

Полезная нагрузка JWT:

{
  "azp": "123456789012-gooddogsgotoheaven.apps.googleusercontent.com",
  "aud": "123456789012-gooddogsgotoheaven.apps.googleusercontent.com",
  "sub": "123456789012345678901",
  "scope": "https://www.googleapis.com/auth/cloud-platform",
  "exp": "1547806224",
  "expires_in": "3596",
  "email": "someone@example.com.com",
  "email_verified": "true",
  "access_type": "offline"
}

Алгоритм: [1118 ]

SHA256withRSA

Чтобы создать подписанный JWT (JWS):

Шаг 1: Возьмите заголовок JWT и преобразуйте его в Base-64. Давайте назовем это hdr_b64.

Шаг 2: Возьмите полезную нагрузку JWT и преобразуйте ее в Base-64. Давайте назовем это payload_b64.

Шаг 3: объединить кодированный заголовок и полезную нагрузку с точкой . между: hdr_b64 + '.' + payload_b64`. Давайте назовем это body_b64.

Шаг 4: Обычно JWS подписывается с SHA256 с помощью RSA, часто называемого «RS256», с использованием закрытого ключа:

signature = sign(body_b64, RS256, private_key)

Теперь преобразуйте подпись в Base-64. Позвольте назвать это signature_b64.

Чтобы создать окончательный JWS:

jws = body_b64 + '.' + signature_b64.

Рекомендации:

Хотите использовать KMS для создания подписанных JWT? Я бы не рекомендовал это. Стоимость ключей доступа хранится в KMS. Подписанные JWT подписываются закрытым ключом и проверяются открытым ключом. Как вы собираетесь публиковать открытый ключ? Какой уровень производительности вам нужен для доступа к закрытым и открытым ключам (как часто вы будете подписывать и проверять)?

Когда вы создаете учетную запись службы в Google Cloud Platform, для вас создается пара ключей. Эта пара ключей имеет идентификатор с открытым ключом, доступным в Интернете, а закрытый ключ присутствует в файле учетных данных Json учетной записи службы. Я бы использовал служебную учетную запись для создания подписанных JWT вместо пары ключей в KMS.

Пример кода на Python для создания и подписи:

def create_signed_jwt(pkey, pkey_id, email, scope):
    '''
    Create a Signed JWT from a service account Json credentials file
    This Signed JWT will later be exchanged for an Access Token
   '''

    import jwt

    # Google Endpoint for creating OAuth 2.0 Access Tokens from Signed-JWT
    auth_url = "https://www.googleapis.com/oauth2/v4/token"

    issued = int(time.time())
    expires = issued + expires_in   # expires_in is in seconds

    # Note: this token expires and cannot be refreshed. The token must be recreated

    # JWT Headers
    headers = {
        "kid": pkey_id, # This is the service account private key ID
        "alg": "RS256",
        "typ": "JWT"    # Google uses SHA256withRSA
    }

    # JWT Payload
    payload = {
            "iss": email,           # Issuer claim
            "sub": email,           # Issuer claim
            "aud": auth_url,        # Audience claim
            "iat": issued,          # Issued At claim
            "exp": expires,         # Expire time
            "scope": scope          # Permissions
    }

    # Encode the headers and payload and sign creating a Signed JWT (JWS)
    sig = jwt.encode(payload, pkey, algorithm="RS256", headers=headers)

    return sig
7
задан Mnementh 1 February 2009 в 18:44
поделиться

14 ответов

Ваша точка в целом является ложью: веб-приложения не более популярны, чем локальные приложения.

В Вашем конкретном случае клиент, вероятно, хочет использовать в своих интересах эти вещи:

  • бесшовные обновления
  • доступность от любой машины без Вас имеющий необходимость установить клиентское программное обеспечение
  • "никакие катастрофические отказы"
  • способность испытать его перед окончанием программного обеспечения
  • воспринятая уменьшенная стоимость.

Если Вы, оказывается, не соглашаетесь с их оценкой, Вы могли бы попытаться убедить их, что Ваш опыт показывает, что веб-приложение не является лучшим пригодным для этого.

Или возможно необходимо рассмотреть исследующие основанные на продолжении веб-платформы, такие как Побережье. Они делают сохраняющееся состояние через взаимодействия не сохраняющие состояние более простым.

8
ответ дан 6 December 2019 в 07:30
поделиться

Вершина обосновывает, что IMO

  1. Они работают от подключенного компьютера любого Интернета, не только того с установленным программным обеспечением.
  2. Когда существует обновление, Вы просто продвигаете его к серверу, и все получают новую версию в следующий раз, когда они входят в систему.
7
ответ дан 6 December 2019 в 07:30
поделиться

Большинство сообщений я видел до сих пор попытку выровнять по ширине веб-приложения путем высказывания, что они делают развертывание легким, что они устраняют "войны ОС", которые обновления просты и т.д.

Все же смысл программного обеспечения должен позволить конечному пользователю быть продуктивным. Привлекательное для покупателя качество веб-приложения, делают задание профессионала программного обеспечения немного легче. Это должно очень, очень трудно для создания богатого веб-приложения, которое выдерживает сравнение с настольным приложением. Обычно существует много компромиссов удобства использования, которые должны быть сделаны.

Иногда те компромиссы стоят, но главная цель должна всегда состоять в том, чтобы дать конечному пользователю лучший возможный опыт. Я видел очень мало веб-приложений, которые делают это, а также настольные приложения.

Конечно, можно сказать, "но run-from-any-browser функция служит пользователю". Возможно, но я возьму hard-to-deploy-but-easy-to-use приложение по easy-to-deploy-but-not-as-easy-to-use приложению любой день недели, если это будет что-то, с чем я должен взаимодействовать регулярно.

Я использую turbotax онлайн, потому что это один раз в год, вещь и мгновенная функция обновления очень важны, но никакой путь не был бы я хотеть работать, Ускоряются из веб-приложения. Никакой путь, нет как.

4
ответ дан 6 December 2019 в 07:30
поделиться

Для меня причина номер один способствовать веб-приложениям по Настольным приложениям состоит в том, что их настолько легко распределить. Я не должен устанавливать приложение, беспокойство, если оно не собирается работать из-за некоторой основанной на клиенте проблемы, такой как персональный брандмауэр или конфликт с другим приложением, и т.д.

Другая причина состоит в том, что я могу выставить обновления приложения легко.

Возможно, ответ для Вас просто, что любой работает точно также. Без большей информации я не вижу, что существует подавляющая причина, Ваше приложение более обеспечено как веб-приложение. Но по причинам вышеизложенные, веб-приложения являются очень привлекательными.

1
ответ дан 6 December 2019 в 07:30
поделиться

Ну, веб-приложения может быть легче поддержать. При обновлении структуры данных традиционного настольного клиента необходимо удостовериться, что клиентское программное обеспечение в правильной версии. В веб-приложении это не грандиозное предприятие.

Кроме того, опечатки / ошибки может быть легче исправить - Вы просто обновляете его однажды и повторно развертываетесь. Традиционное настольное приложение должно было бы обновить себя автоматически или (если Вы - действительно sado-мазохист), обновление вручную.

Сделав и традиционные настольные клиенты и веб-приложения, я выбрал бы веб-приложения.

Однако я удивлен, что такое небольшое приложение должно было бы быть веб-приложением.

1
ответ дан 6 December 2019 в 07:30
поделиться

честно говоря, потому что назад в день перед.NET, веб-приложения имели три главных advanteges по основанным на COM приложениям winforms, которые сделали их очень предпочтительными почти во всех ситуациях.

 1.  They required no installation or deployment on client machines
 2.  They could not break other apps on the client machine. 
 3.  They could be made to function on just about any computer in the world that had a browser and could connect to the application's web server.

Эти проблемы были значительными, потому что для приложения winforms тогда, они были кошмаром, особенно точки 1 и 2. ("dll ад"), Когда .NET был выпущен, первые две точки стали спорными... приложения .NET щелчком однажды развертывание, и никакая зависимость от КЛЮЧЕЙ/ГУИДОВ Реестра для двоичного файла не повторно предъявляет иск, и совместимость компонента (Метаданные к implment двоичному файлу contracys хранится в самом компоненте, вместо в реестре машины), эти проблемы стали спорными.
В целом единственной причиной в наше время для предпочтения веб-приложения является № 3, где клиентура включает nonWintel платформы.

1
ответ дан 6 December 2019 в 07:30
поделиться

Невозможно ответить, более ли веб-приложения популярны, чем Локальные приложения. Конечно, существуют определенные типы приложения, которое лучше подошло бы для Интернета.

Было уже упомянуто, что веб-приложения имеют эти воспринятые преимущества:

  • Никакая установка или реальная установка не требуются
  • Данные могут регистрироваться легче. При использовании Офисного приложения затем это автоматически сохраняет мою работу онлайн для использования где угодно, и теоретически при администрировании такой программы затем, у Вас может быть доступ к документам других. Это могло быть полезно для бизнеса в целом
  • Это работает, пока у пользователя есть рабочий браузер. Никакие более сумасшедшие ошибки или данные, потерянные, потому что это - все в Интернете!

Если эти преимущества работают хорошо с Вашим выбором приложения, затем большого! Разработайте для мира онлайн и пожинайте преимущества. Проблема возникает, когда Ваше приложение не подходит для мира онлайн. Попытайтесь реализовать интерактивную версию Споры и видеть, как далеко Вы добираетесь.

Для упрощения вещей единственное время, веб-приложение лучше, чем Настольное приложение, - когда необходимая функциональность и бизнес-требования показывают, что использование онлайн было бы лучше, чем локальное использование. Мой друг работает в Магазине Телефона O2, и их новое приложение регистрации пользователя является онлайн-приложением. Таким образом, все данные могут храниться локально в хранилище и передаваться одновременно основным офисам, чтобы гарантировать, что телефон активируется. Этот вид приложения подходит для сети, потому что это должно быть установлено в сотнях мест и потребностей к данным логов локально и в основных офисах.

Через мой собственный личный опыт существует мало причины в наше время для использования онлайн-приложения. У очень немногих из них есть большие преимущества для их настольных дубликатов, и пока приложение-приманка не прибудет не будет серьезного основания измениться.

1
ответ дан 6 December 2019 в 07:30
поделиться

Я не соглашаюсь с Rich в этом, по моему опыту, веб-приложения более популярны, но это зависит от того, что Вы подразумеваете под популярностью.

То, что я подразумеваю под популярностью, в этом случае, то, что, если бы я принимаю случайное задание программирования в случайной небольшой или компании-разработчике программного обеспечения среднего размера, я ожидал бы, что они работают над программным обеспечением для сети. Существует много исключений к этому правилу, конечно, но общая тенденция к лучшему часть десятилетия теперь была к веб-разработке.

Многие из других ответов приводят серьезные причины для одобрения веб-разработки:

  • Никакая установка суеты / процесс дистрибуции
  • Относительная простота межплатформенной поддержки

Огромный, по-моему, как Rich выражается, "чувствовал уменьшенная стоимость". Веб-разработка имеет очень низкий барьер для доступа по сравнению с другими методами программирования. Можно запустить с HTML и CSS, движение к JavaScript, выпускник к PHP и Flash, и в той точке называют себя веб-разработчиком. Среды как C++ и Java имеют жестокую кривую обучения для сравнения.

По моему опыту, настроенные на бизнес люди так оказываются в том, как "легкая" веб-разработка состоит в том, что они часто забывают, что существуют альтернативы. Я был однажды на проекте, где относительно веб-проекта первоначально попросили, и менеджер проектов был удивлен, когда команда разработчиков заявила, что настольное приложение будет более дешевым для разработки, учитывая требования. Нетехнические люди могут просто предположить, что веб-приложение стоит меньше, потому что они не понимают различия.

1
ответ дан 6 December 2019 в 07:30
поделиться

Некоторые дополнительные причины:

  1. потому что хорошо созданное веб-приложение будет работать фактически на ЛЮБОМ компьютере, который может выполнить браузер. Это эффективно заканчивает войны ОС при выполнении веб-приложений - поклонники Apple могут продолжать использовать яблоки, вентиляторы Msoft и вентиляторы Unix/Linux аналогично.

С настольным приложением необходимо или выбрать платформу/ОС или иначе использовать некоторый инструмент, который обещает (Ха!) возможность мульти-ОС (и затем имеют дело с почтой ненависти со всех сторон, когда настольное приложение смотрит в отличие от того, что любой из них "привык к использованию".

  1. Столь же сказанный прежде, обновления так же просты как перерегистрация кода к серверу. Никакой беспорядок, никакая суета. Обновление настольных приложений может быть кошмаром, особенно если Вы разрабатываете новую версию с помощью новых инструментов, и suddently должны обновить весь "другой материал" (dlls, двоичные файлы, безотносительно) на всех рабочих столах. В худшем случае Ваша необычная новая версия даже не может работать на более старой ОС, потому что двоичные библиотеки идут с ОС. ТАКИМ ОБРАЗОМ, теперь Вы обновляете ОС (и аппаратные средства - yikes!) также.

  2. Для большинства приложений веб-интерфейс просто прекрасен, особенно при создании стандарта "чтение запишите, отчет - от базы данных" приложение, веб-интерфейс довольно достоин. И это довольно достойно на большинстве браузеров (см. № 1). Настольные приложения имеют плохую тенденцию потеряться в текущей "необычной тенденции UI" (помните, когда каждое приложение Windows должно было иметь несколько окон). Объем кода, который Вы не должны писать, может быть довольно много.

  3. КЛИЕНТ всегда прав. Теперь протест состоит в том, что Вы, как разработчик/разработчик, потребность проникнуть внутрь головы клиента как можно больше и определить, ПОЧЕМУ они просят определенные требования. Удостоверьтесь, что ФАКТИЧЕСКАЯ проблема становится решенной сначала, но если это так, затем подчинитесь пожеланиям клиента.

Удачи,

- R

0
ответ дан 6 December 2019 в 07:30
поделиться

"Я могу установить его на компьютерах их". И когда Вы выигрываете лотерею, что затем? Теперь, кто будет заботиться о тех любовно рабочих столах ручной работы, рабочие столы, которые имеют уникальное программное обеспечение?

Централизованное администрирование веб-приложения - даже для двух человек - имеет огромную ценность для организации.

0
ответ дан 6 December 2019 в 07:30
поделиться

Веб-приложения не более популярны у пользователей приложения.

Но пользователи приложения часто не платят за свое собственное программное обеспечение.

Покупатели программного обеспечения не принимают решения на основе технических достоинств.

0
ответ дан 6 December 2019 в 07:30
поделиться
  • Автоматически сохраненные данные/файлы..., надо надеяться.
  • Автоматические обновления и установки
0
ответ дан 6 December 2019 в 07:30
поделиться

В первую очередь, я думаю, что существует (небольшое) различие между сетью/приложением и клиент-серверным приложением. Веб-приложение является своего рода клиент-серверным приложением, где сервер полностью находится вне контроля клиентов, и клиент является браузером. Клиент-серверное приложение является тем, где клиент владеет и управляет и сервером и клиентом. Ваш случай больше походит на клиент-серверное приложение, не веб-приложение по сути.

В дополнение ко всем причинам все упомянули относительно того, почему веб-приложения более привлекательны, не забывайте включать это, большинство из них обеспечивает бесплатную версию. Не только ограниченная временем или демонстрационная версия с ограниченными возможностями, но и бесплатная версия, которую можно продолжать использовать навсегда или пока они не прекращают ее (в обмен на некоторую вещь, конечно, персональные данные, внимание для дохода от рекламы, и т.д.). Это - огромный стимул (так как большинство нахлебников не хотело бы заплатить за приложение так или иначе) в дополнение ни к какой установке и никакому преимуществу обновления.

Если необходимо сохранить копии данных, хотя, и Вы - жесткий "создатель", а не просто потребитель, то гибридное настольное приложение, которое синхронизирует к серверу, является намного лучшим решением, по-моему.

0
ответ дан 6 December 2019 в 07:30
поделиться

Я думаю, что часть причины имеет отношение к ограниченным опциям для человеческого взаимодействия, которое большинство веб-приложений предлагает (если Вы не становитесь необычными).

Например, я раньше работал в компании, которая сделала программное обеспечение здравоохранения, и у нас был heck времени, заставляя пользователей понять щелчок правой кнопкой и перетаскивание. Так, для каждого действия в программе у нас должны были быть опция контекстного меню, значок на панели инструментов и пункт меню, такой как Файл-> Опции-> Экспорт.

В веб-приложении это походит большую часть времени, у Вас есть две опции - или ссылка или кнопка (уверенный, я понимаю, что можно сделать все, что делает любое толстое приложение, но я просто говорю большую часть времени, Вы только сталкиваетесь с кнопками и ссылками).

Из-за этого кажется, что много пользователей испытывает меньше затруднений при выяснении веб-приложений. Они просто ищут кнопку, маркировал "Save", и нажмите его. Поэтому те пользователи предпочитают веб-приложения, потому что они рассматривают их как легче использовать.

И, так как природа веб-приложений также означает, что много времен, по которым Вы перемещаетесь далеко от страницы, которая имеет любой вид меню на ней (обычно существует не меню "File, Edit, Help" наверху каждой страницы), существует меньше шума для них для запутываний. Они просто смотрят на страницу, которая полна полей и выпадает, и см. две небольших кнопки внизу, маркировал "Save" или "Cancel". Редко, чтобы я видел толстое приложение, которое ограничивается тем уровнем.

0
ответ дан 6 December 2019 в 07:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: