小编Dun*_*ken的帖子

.net 4.0上的Microsoft ASP.NET Web API 2

是否可以将ASP.NET Web API 2与.net 4.0一起使用?我尝试从旧版本升级,但我得到:

无法安装包'Microsoft.AspNet.WebApi.Client 5.0.0'.您正在尝试将此软件包安装到以".NETFramework,Version = v4.0"为目标的项目中

asp.net-web-api

38
推荐指数
2
解决办法
3万
查看次数

ASP.NET Web API和OpenID Connect:如何从授权代码获取访问令牌

我尝试让OpenID Connect运行...我的Web API用户设法获得OpenID Connect Provider的授权码.我应该如何将此代码传递给我的ASP.NET Web API?如何配置OWIN中间件,以便我可以使用授权码获取访问令牌?

更新:SPA使用AJAX与我的Web服务(ASP.NET Web API)进行通信.在我的Web服务中使用OWIN Middleware.我将OpenIDConnect设置为身份验证机制.首次调用Web服务时,它成功将用户重定向到OpenID Connect Provider的登录页面.用户可以登录并获得授权码.AFAIK此代码现在可以(通过我的Web服务)用于访问令牌.但是,我不知道如何将此代码返回到我的Web服务(这是使用标头完成吗?)然后配置什么来获取访问令牌.我想我可以手动调用令牌端点,但我想利用OWIN组件.

c# azure asp.net-web-api owin openid-connect

13
推荐指数
3
解决办法
2万
查看次数

Swagger/Swashbuckle:具有资源所有者密码凭证授权的OAuth2

我正在尝试将Swashbuckle 5.0.x与OAuth2一起使用.我想使用OAuth2的资源所有者密码凭据授权.我基本上只想先请求令牌并在每个请求中包含此令牌(例如,不需要范围).

有人能帮忙吗?我如何配置swagger/swashbuckle?

swagger swagger-ui swashbuckle

12
推荐指数
2
解决办法
5405
查看次数

使用Google OpenID Connect的ASP.NET Web API

目标: 我想使用OpenID Connect保护我的Web服务(使用OWIN的ASP.NET Web API).身份提供商是Google.

重要提示: 我只负责Web服务.我没有任何Web应用程序(没有UI;这取决于使用我的Web服务的第三方).

注意事项: 由于我的Web服务在服务器上运行,我认为最好使用授权代码流(或混合?).

到目前为止做了什么:我配置OWIN(在我的Web服务中)使用OpenID Connect(UseOpenIdConnectAuthentication).

当前行为: 我有人未经授权尝试访问Web服务,Web服务将她重定向(发送302)给Google.由于我没有UI,因此需要第三方正确显示同意页面.假设用户同意并按"接受".

在这里,我被卡住了...据我所知,谷歌发回了授权码(我的网络服务可以使用它来获取访问令牌).我怎样才能获得授权码?Google甚至支持授权代码流程(ResponseType = code)吗?

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
    ClientId = "aClientId",
    ClientSecret = "aClientSecret",
    Authority = "https://accounts.google.com/",
    RedirectUri = "do I need this??",  //I guess here I would register a resources... but what to do in there?
    ResponseType =  "code",            //does Google even support code??
    Scope = "openid",                
    Notifications = new OpenIdConnectAuthenticationNotifications()
    {
        AuthorizationCodeReceived = (context) =>
        {
            var code = context.Code; //I never …
Run Code Online (Sandbox Code Playgroud)

oauth-2.0 asp.net-web-api google-oauth owin openid-connect

9
推荐指数
0
解决办法
1583
查看次数

IIS:URL重写/ signalr /和/ api /到端口8080

我有一个在端口8080上运行的自托管API.在端口80上是我的网络服务器(IIS 7.5),我的网站无法触及.我添加了一个应用程序"MyApiTestsite".现在对/ api /或/ signalr/I的所有请求都要转发到端口8080:

http://mycompany/MyApiTestsite           -> untouched
http://mycompany/MyApiTestsite/signalr/* -> http://mycompany:8080/signalr/*
http://mycompany/MyApiTestsite/api/*     -> http://mycompany:8080/api/*
Run Code Online (Sandbox Code Playgroud)

我已经安装了ARR(这甚至是必要的吗?)和URL Rewrite.

这是我到目前为止的规则(对于SignalR):

<rule name="Rewrite SignalR to port 8080" patternSyntax="Wildcard" stopProcessing="true">
  <match url="signalr/*" />
  <serverVariables>
    <set name="SERVER_PORT" value="8080" />
  </serverVariables>
  <action type="Rewrite" url="{R:0}" appendQueryString="true" logRewrittenUrl="false" />
</rule>
Run Code Online (Sandbox Code Playgroud)

我检查了日志文件,规则得到匹配.但是,它根本不起作用:

  • 我不知道如何摆脱RelativePath(我的应用程序) MyApiTestsite
  • 如果我检查日志,端口没有被替换

日志:

RULE_EVALUATION_END RuleName="Rewrite SignalR to port 8080", RequestURL="MyApiTestsite/signalr/hubs", QueryString="", StopProcessing="true", Succeeded="true"

URL_REWRITE_END RequestURL="/MyApiTestsite/signalr/hubs"

GENERAL_CHILD_REQUEST_START SiteId="4", RequestURL="http://mycompany:80/MyApiTestsite/signalr/hubs", RequestVerb="GET", RecursiveLevel="1"
Run Code Online (Sandbox Code Playgroud)

更新: 我现在根据这篇文章尝试过.但是,它仍然无效.URL似乎很好,但MvcHandler接管并返回404:

URL_REWRITE_END RequestURL ="http:// mycompany:8080/signalsr/hubs"

USER_SET AuthType ="",UserName ="",SupportsIsInRole ="true" …

iis url-rewriting self-hosting signalr arr

8
推荐指数
1
解决办法
4927
查看次数

根据RFC4648,C#:base64url

我正在根据C#中的RFC4648寻找base64url的(快速)标准实现.

我发现HttpServerUtility.UrlTokenEncode但看起来这并不遵循RFC4648(UrlTokenEncode在末尾添加一个数字,表示=已删除的符号数量;请参阅此处此处).

例:

base64编码:

Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes( "AA")); //返回"QUE ="

base64url编码:

HttpServerUtility.UrlTokenEncode(System.Text.Encoding.ASCII.GetBytes( "AA")); //返回"QUE1",但我希望"QUE"

c# base64 urlencode url-encoding

8
推荐指数
1
解决办法
2849
查看次数

Launch.json:如何引用环境变量

为了在一个地方定义我的环境变量,配置了一个运行 shell 脚本的任务。任务preLaunchTask在我的launch.json.

在我的 launch.json 中,我现在尝试引用我在脚本中配置的环境变量(如export AWS_REGION="eu-west-1")。

launch.json 如下所示:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch",
            //..
            "env": {
                //"AWS_REGION": "us-east-1",        //works
                "AWS_REGION": "${env:AWS_REGION}",  //doesn't work, why?
            },
            "args": [],
            "preLaunchTask": "setupEnv",
        }
    ] }
Run Code Online (Sandbox Code Playgroud)

visual-studio-code vscode-settings vscode-tasks

8
推荐指数
2
解决办法
1891
查看次数

在任务中使用语句

在ASP.NET Web API控制器中,我想返回一个图像.为了流式传输图像,我需要一个MemoryStream.通常我会把它包装在一个using声明中,以确保它之后得到妥善处理.但是,因为这在异步中执行Task不起作用:

public class ImagesController : ApiController
{
    private HttpContent GetPngBitmap(Stream stream)
    {
        var pngBitmapEncoder = new PngBitmapEncoder();
        pngBitmapEncoder.Save(stream);
        stream.Seek(0, SeekOrigin.Begin);
        return new StreamContent(stream);
    }

    // GET api/images
    public Task<HttpResponseMessage> Get(string id, string path)
    {            
        //do stuff           
        return Task.Factory.StartNew(() =>
        {
            var stream = new MemoryStream(); //as it's asynchronous we can't use a using statement here!
            {
                var response = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = GetPngBitmap(stream)
                };
                response.Content.Headers.ContentType =
                    new System.Net.Http.Headers.MediaTypeHeaderValue("image/png");
                return response; …
Run Code Online (Sandbox Code Playgroud)

c# using task-parallel-library asp.net-web-api

6
推荐指数
1
解决办法
1731
查看次数

OpenID Connect:资源所有者密码凭据

OIDC不支持资源所有者密码凭据授予.为什么?我的一些客户端是可以安全维护凭据的安全设备......这些凭据可用于获取access_token.我还可以使用OpenID Connect吗?

oauth-2.0 openid-connect

6
推荐指数
1
解决办法
2728
查看次数

使用适当的KeySpec导出PFX(Windows Server 2012 R2)

如果在我的库中的证书和我检查与certutilKeySpec设置为AT_SIGNATURE(我不得不因此重新导入).现在每当我导出证书(通过MMCPowerShell)时,都会KeySpec被设置回AT_KEYEXCHANGE.我怎么能改变呢?

pfx code-signing-certificate

6
推荐指数
1
解决办法
436
查看次数