Tag: oauth

ASP.NET Identity(使用IdentityServer4)获取外部资源oauth访问令牌

我已经浏览了identityServer4的文档,我已将其设置为使用Microsoft Office 365作为登录提供程序。 当用户登录时,我想创建一个按钮,他可以让我的应用程序使用graph.microsoft.com的webhooks api订阅他的日历事件 startup.cs中的代码 app.UseMicrosoftAccountAuthentication(new MicrosoftAccountOptions { AuthenticationScheme = “Microsoft”, DisplayName = “Microsoft”, SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme, ClientId = “CLIENT ID”, ClientSecret = “CLIENT SECRET”, CallbackPath = new PathString(“/signin-microsoft”), Events = new OAuthEvents { OnCreatingTicket = context => { redisCache.Set(“AccessToken”, context.AccessToken.GetBytes(), new DistributedCacheEntryOptions { AbsoluteExpiration = DateTimeOffset.UtcNow.AddDays(3) }); return Task.FromResult(context); } } Scope = […]

有没有人使用DNOA实现2 Legged OAuth?

我正在尝试在CSharp中创建一个身份validation模块,我需要使用用于2 Legged OAuth的DotNetOpenAuth(DNOA)库来validation请求中的签名,它只有消费者密钥和密钥。 如果您有任何使用DNOA的2 Legged OAuth示例实现会有所帮助。 如果没有,任何关于如何实施的想法也会起作用。 任何帮助将非常感激。

WPF和C#中的Facebook OAuth示例

我正在开发一个WPF应用程序,要求我使用oAuth从Facebook获取访问令牌。 经过多次在线搜索,我得出以下结论: OAuth必须在浏览器中完成 我需要在该浏览器中查看URLpost,因此它必须位于WebBrowser WPF控件中 我决定创建一个用于进行Facebook身份validation的modal dialog,我可以使用访问令牌而忽略其余部分。 我想继续使用MVVM模型,但它比我预期的要困难。 关于如何做到这一点的任何想法都会非常有帮助 以下是我实现的一些function Cookie删除因此可以让另一个用户进行身份validation,而无需将当前用户注销 禁用新帐户创建,因为它导致了奇怪的UI体验 从Facebook生成的javascript中收听取消按钮 WPF窗口 WPF非常简单。 从本质上讲,它只是一个WebBrowser控件,其中包含Navigated和Navigating事件。 代码 //The Application ID from Facebook public string AppID {get; set; } //The access token retrieved from facebook’s authentication public string AccessToken {get; set; } public FacebookAuthenticationWindow() { InitializeComponent(); this.Loaded += (object sender, RoutedEventArgs e) => { //Add the […]

如何开始使用OAuth来保护Web API应用程序?

我有一个Web API应用程序,我知道OAuth将是API的标准安全模型,其中Authentication Server将负责生成授权令牌,以便用户可以发送到我们的服务器并使用服务。 我对此很新,但我理解所涉及的角色: 资源所有者 客户 资源服务器 授权服务器 但OAuth究竟在实践中是什么,而不是理论上的? 它是一个.NET库吗? 这是一家由独立公司提供的服务吗? 这是我可以在我的本地开发机器上配置的东西,看看它是如何工作的? 如何开始使用OAuth来保护Web API应用程序?

401未经授权使用Yahoo OAuth

我的下面的代码每次都返回401 Unauthorized错误: HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(“http://query.yahooapis.com/v1/yql?q=select%20fields.value%20from%20social.contacts%20where%20guid%3Dme&diagnostics=false”); request.Headers.Add( “Authorization: OAuth ” + “realm=\”” + “yahooapis.com” + “\”,” + “oauth_consumer_key=\”” + ConfigurationManager.AppSettings[“yahoo_oauth_consumer_key”] + “\”,” + “oauth_nonce=\”” + Guid.NewGuid().ToString() + “\”,” + “oauth_signature_method=\”” + “PLAINTEXT” + “\”,” + “oauth_timestamp=\”” + ((DateTime.UtcNow.Ticks – new DateTime(1970, 1, 1).Ticks) / (1000 * 10000)).ToString() + “\”,” + “oauth_token=\”” + accessToken.TokenValue + “\”,” […]

尝试访问Azure Graph API时,权限不足错误

我已经设置了一个Azure AD应用程序,我希望将其与我的Web应用程序一起使用。 我使用以下步骤获得了oAuth令牌: 首先我请求了我的授权码: https://login.windows.net/common/oauth2/authorize?redirect_uri={REDIRECT_URI}&client_id={CLIENT_ID}&response_type=code&state=o365&prompt=admin_consent 这会将用户带到login.windows.net页面,他们必须接受我的应用程序将在其AD上使用的权限。 之后,我使用此端点https://login.windows.net/common/oauth2/token使用C#获取oAuth Token: {“code”: {AUTH_CODE}}, {“state”, {STATE}}, {“grant_type”, “authorization_code”}, {“redirect_uri”, “{REDIRECT_URI}”}, {“client_id”, “1ff78c4b-414f-44c7-834b-09bdae96f440”}, {“client_secret”, “{CLIENT_SECRET}”}, {“resource”, “https://graph.windows.net”} 一切都回来了,我得到了我的oAuth令牌。 但是,当我尝试使用令牌curlGraph API时,我收到此错误 curl https://graph.windows.net/{tenant}/users?api-version=1.5 -H “Authorization: Bearer [AUTH_TOKEN]” {“odata.error”:{“code”:”Authorization_RequestDenied”,”message”:{“lang”:”en”,”value”:”Insufficient privileges to complete the operation.”}}} 我已经尝试了{tenant},“me”别名和“myorganization”别名的实际域名,但它们都不起作用。 “me”别名返回错误,指出’users’资源不存在。 我对这里的问题感到困惑

Owin Bearer Token不适用于WebApi

我已经浏览了大量文档,我的谷歌搜索显示我访问了第一页上的所有链接 问题令牌生成工作正常。 我使用自定义提供程序对其进行了配置: public void ConfigureOAuth(IAppBuilder app) { var usermanager = NinjectContainer.Resolve(); app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions { AllowInsecureHttp = true, TokenEndpointPath = new PathString(“/token”), AccessTokenExpireTimeSpan = TimeSpan.FromDays(1), Provider = new AppOAuthProvider(usermanager) }); app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions()); } 但是,当我调用受保护的URL并传递持有者令牌时,我总是得到: 如何诊断或解决问题。 如果可能,我如何自己进行令牌validation 更新这是我的AppOAuthProvider。 当我尝试使用令牌时,会调用这两种方法,但在我尝试访问受保护资源时则不会 public class AppOAuthProvider : OAuthAuthorizationServerProvider { private UserManager _user; public AppOAuthProvider(UserManager user) { _user = user; } […]

用于签署Flickr API请求的无效签名(在控制台中进行模拟)

我正在尝试对Flickr API进行身份validation,以获取我想为自己制作的演示应用程序。 然后我将使用我将学习Flick API的新function扩展此应用程序。 所以这只是我想要玩的东西。 但是现在我在获取请求令牌方面遇到了一些麻烦。 我在这里关注Flickr身份validation文档: Flickr身份validation 我还发现了这个Mathlabscript: Flickr API和基于OAuth的用户身份validation 所以基于这些来源我现在有以下控制台应用程序: class Program { private static string Secret = “2b2b2b2b2b2b2b2b2b”; private static string ConsumerKey = “1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a1a”; static void Main(string[] args) { Random rand = new Random(); string nonce = rand.Next(9999999).ToString(); string timestamp = ((int)(DateTime.UtcNow – new DateTime(1970, 1, 1)).TotalSeconds).ToString(); Console.WriteLine(“Nonce: ” + nonce); Console.WriteLine(“TimeStamp: […]

服务应用程序的Google oAuth 2.0(JWT令牌请求)

我正在尝试为此处描述的服务帐户实施Google oAuth 2:在UnityScript上使用https://developers.google.com/accounts/docs/OAuth2ServiceAccount (或C# – 这无关紧要,因为它们都使用相同的Mono .NET类)。 我在这里找到了类似的主题: C#中是否有JSON Web Token(JWT)示例? web-token-jwt-example-in-c但我仍然没有成功。 首先,我已生成标题和声明集(就像在谷歌文档中一样) var header: String = GetJWTHeader(); var claimset: String = GetJWTClaimSet(); 结果是(为清晰起见,用新行分隔): { “ALG”: “RS256”, “典型”: “智威汤逊”} { “ISS”: “425466719070-1dg2rebp0a8fn9l02k9ntr6u5o4a8lp2.apps.googleusercontent.com” “范围”:“ https://www.googleapis.com/auth/prediction ”, “aud”:“ https://accounts.google.com/o/oauth2/token ”, “EXP”:1340222315, “IAT”:1340218715} Base-64编码方法: public static function Base64Encode(b: byte[]): String { var s: String = Convert.ToBase64String(b); s = […]

授权角色WebAPI oauth owin

我在ASP.NET Web API上使用OWIN中间件实现了令牌授权系统。 我成功地可以使用REST客户端进行身份validation并获取授权令牌来调用API。 如果我将[Authorize]属性放在我的控制器中的GET操作上,它也可以正常工作。 如果我没有有效的令牌,它会拒绝带有401消息的资源,但是如果我将[Authorize(Roles=”admins”)]与roles参数一起使用,则它无法识别用户的角色。 我validation了数据库中的内容,并检查了用户usersinroles是否正确填充。 这是一段代码: [Authorize(Roles = “admins”)] public IEnumerable Get() { ClaimsPrincipal principal = Request.GetRequestContext().Principal as ClaimsPrincipal; bool isrole = principal.IsInRole(“admins”); 我还检查了没有roles参数的动作,并且isrole boolean总是为false 。 我必须启用某些function吗?