JWA が実装必須(Required)としている唯一の JWS アルゴリズムであり、多くのチュートリアルやフレームワークでデフォルトになっています。32 バイトのタグは共有シークレットを使って header.payload に対して計算され、検証ではタグを再計算して定数時間で比較します。
主な問題は弱いシークレットです。RFC 7518 はハッシュ長(256 ビット)以上の鍵を求めていますが、secret のような短いシークレットや辞書にある語で署名されたトークンは、1 つのトークンからオフラインで割り出せます(hashcat のモード 16500、jwt_tool)。そうなると、攻撃者は任意のトークンを発行できます。パスワードは決して使わず、32 バイト以上のランダムなバイト列を使って、JWT シークレットチェッカーで確認してください。
HS256 が適しているのは、同じサービスがトークンを発行し、検証する場合です。サードパーティの検証者、マイクロサービス、パブリッククライアントには非対称アルゴリズムを使って検証者が公開鍵だけを持つようにし、RS256 との混同を避けるため、鍵ごとにアルゴリズムを固定してください。