C # .net Core считывает полезную нагрузку JWT rs256 [дубликат]

Использовать all

.some-selector {
    all: initial;
}

.some-selector * {
    all: unset;
}

или использовать Shadow DOM

Library

function Widget(nodeName, appendTo){
  this.outer = document.createElement(nodeName || 'DIV');
  this.outer.className = 'extension-widget-' + chrome.runtime.id;
  this.inner = this.outer.createShadowRoot();
  (appendTo || document.body).appendChild(this.outer);
}

Widget.prototype.show = function(){
  this.outer.style.display = 'block';
  return this;
};

Widget.prototype.hide = function(){
  this.outer.style.display = 'none';
  return this;
};

Использование

var myWidget = new Widget();
myWidget.inner.innerHTML = '<h1>myWidget</h1>';

Вы можете получить доступ к содержимому виджета через myWidget.inner и внешний через myWidget.outer.

Стили

/* 
 * Reset Widget Wrapper Element 
 */
.extension-widget-__MSG_@@extension_id__ {
  background: none;
  border: none;
  bottom: auto;
  box-shadow: none;
  color: black;
  cursor: auto;
  display: inline;
  float: none;
  font-family : "Helvetica Neue", "Helvetica", "Arial", sans-serif;
  font-size: inherit;
  font-style: normal;
  font-variant: normal;
  font-weight: normal;
  height: auto;
  left: auto;
  letter-spacing: 0;
  line-height: 100%;
  margin: 0;
  max-height: none;
  max-width: none;
  min-height: 0;
  min-width: 0;
  opacity: 1;
  padding: 0;
  position: static;
  right: auto;
  text-align: left;
  text-decoration: none;
  text-indent: 0;
  text-shadow: none;
  text-transform: none;
  top: auto;
  vertical-align: baseline;
  white-space: normal;
  width: auto;
  z-index: 2147483648;
}

/* 
 * Add your own styles here 
 * but always prefix them with:
 * 
 *   .extension-widget-__MSG_@@extension_id__ 
 *   
 */

.extension-widget-__MSG_@@extension_id__{
  position: fixed;
  top: 100px;
  margin: 0 auto;
  left: 0;
  right: 0;
  width: 500px;
}

.extension-widget-__MSG_@@extension_id__::shadow h1 {
  display: block;
  margin: 0 auto;
  padding: 20px;
  background-color: yellow;
  border: 10px solid green;
  font-size: 20px;
  text-align: center;
}
38
задан Cooxkie 12 July 2016 в 22:52
поделиться

5 ответов

Я нашел решение, я просто пропустил результат Cast, как показано ниже:

var tokenS = handler.ReadToken(tokenJwtReponse.access_token) as JwtSecurityToken;

После того, как я получу претензии:

 var jti = tokenS.Claims.First(claim => claim.Type == "jti").Value;
52
ответ дан Cooxkie 18 August 2018 в 18:16
поделиться
  • 1
    Вначале мне пришлось бросать tokenS.Claims как список претензий. ((List<Claim>)tokenS.Claims).ForEach(a => Console.WriteLine(a.Type.ToString() + " " + a.Value)); – Rinaldi Segecin 13 April 2017 в 22:44
  • 2
    Для зарегистрированных претензий вы можете получить значение свойства непосредственно из JwtSecurityToken. Например, tokenS.Id получит значение jti – user875318 30 January 2018 в 15:30
  • 3
    Вы также можете сделать: handler.ReadJwtToken (tokenJwtReponse.access_token); – Thabiso Mofokeng 20 February 2018 в 16:30
  • 4
    Кроме того, не используйте литье под типом, если вы не ожидаете, что он НЕ будет этого типа. Используйте (JwtSecurityToken)handler.ReadToken(tokenJwtReponse.access_token), чтобы вы получили InvalidCastException, а не позже NullReferenceException. См. этот – OffHeGoes 4 June 2018 в 08:42

new JwtSecurityTokenHandler().ReadToken("") вернет SecurityToken

new JwtSecurityTokenHandler().ReadJwtToken("") вернет JwtSecurityToken

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

3
ответ дан dpix 18 August 2018 в 18:16
поделиться

Используя пакеты .net core jwt, доступны претензии:

[Route("api/[controller]")]
[ApiController]
[Authorize(Policy = "Bearer")]
public class AbstractController: ControllerBase
{
    protected string UserId()
    {
        var principal = HttpContext.User;
        if (principal?.Claims != null)
        {
            foreach (var claim in principal.Claims)
            {
               log.Debug($"CLAIM TYPE: {claim.Type}; CLAIM VALUE: {claim.Value}");
            }

        }
        return principal?.Claims?.SingleOrDefault(p => p.Type == "username")?.Value;
    }
}
0
ответ дан jenson-button-event 18 August 2018 в 18:16
поделиться
1
ответ дан Pato Milán 7 September 2018 в 02:39
поделиться
3
ответ дан Pato Milán 30 October 2018 в 06:52
поделиться
Другие вопросы по тегам:

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