Простой DLL C# - как я называю его от Excel, Доступа, VBA, VB6?

Существует три способа сравнения OAuth и OpenID:

1. Цели

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

OAuth был создан, чтобы избавить пользователей от необходимости делиться своими паролями со сторонними приложениями . На самом деле все началось как способ решения проблемы OpenID: если вы поддерживаете OpenID на своем сайте, вы не можете использовать базовые учетные данные HTTP (имя пользователя и пароль) для предоставления API, поскольку у пользователей нет пароля на вашем сайте.

Проблема с этим разделением OpenID для аутентификации и OAuth для авторизации состоит в том, что оба протокола могут выполнять много одинаковых задач. Каждый из них предоставляет свой набор функций, которые желательны для разных реализаций, но по сути они довольно взаимозаменяемы. По своей сути оба протокола являются методом проверки утверждений (OpenID ограничен утверждением «это я», а OAuth предоставляет «токен доступа», который можно обменять на любое поддерживаемое утверждение через API).

2. Особенности

Оба протокола предоставляют сайту способ перенаправить пользователя куда-то еще и вернуться с проверяемым утверждением. OpenID обеспечивает подтверждение идентичности, в то время как OAuth является более универсальным в форме токена доступа, который затем можно использовать для «задания вопросов поставщику OAuth» . Однако каждый из них поддерживает различные функции:

OpenID - наиболее важной особенностью OpenID является процесс его обнаружения. OpenID не требует жесткого кодирования каждого провайдера, которого вы хотите использовать заранее. Используя обнаружение, пользователь может выбрать любого стороннего поставщика, которого он хочет аутентифицировать. Эта функция обнаружения также вызвала большинство проблем OpenID, потому что она реализована с использованием HTTP URI в качестве идентификаторов, которые большинство веб-пользователей просто не получают. Другие функции, которыми обладает OpenID, - это поддержка регистрации клиентов по принципу ad-hoc с использованием обмена DH, немедленный режим для оптимизированного взаимодействия с конечным пользователем, а также способ проверки утверждений без повторного обращения к поставщику.

OAuth - наиболее важной особенностью OAuth является токен доступа, который обеспечивает длительный метод выполнения дополнительных запросов. В отличие от OpenID, OAuth не заканчивается аутентификацией, но предоставляет токен доступа для получения доступа к дополнительным ресурсам, предоставляемым той же сторонней службой. Однако, поскольку OAuth не поддерживает обнаружение, оно требует предварительного выбора и жесткого кодирования поставщиков, которых вы решите использовать. Пользователь, посещающий ваш сайт, не может использовать любые идентификаторы, только те, которые вы предварительно выбрали. Кроме того, OAuth не имеет понятия идентичности, поэтому использование его для входа в систему означает либо добавление пользовательского параметра (как это сделано в Twitter), либо выполнение другого вызова API для получения текущего пользователя, вошедшего в систему.

3. Технические реализации

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

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

38
задан divinci 23 July 2009 в 11:15
поделиться

3 ответа

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

[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("01A31113-9353-44cc-A1F4-C6F1210E4B30")]  //Allocate your own GUID
public interface _Test
{
    string HelloWorld { get; }
}

[ClassInterface(ClassInterfaceType.None)]
[Guid("E2F07CD4-CE73-4102-B35D-119362624C47")]  //Allocate your own GUID
[ProgId("TestDll.Test")]
public class Test : _Test
{
    public string HelloWorld { get { return "Hello, World! "; } }
}

На вкладке «Сборка» свойств проекта выберите «Зарегистрироваться для COM-взаимодействия». Так вы сможете быстро увидеть результаты. Чтобы установить dll на другой компьютер, вам нужно использовать regasm.

Чтобы затем использовать это:

Dim o : Set o = CreateObject("TestDll.Test")
MsgBox o.HelloWorld

Вы также можете ссылаться на dll и использовать раннее связывание:

Dim o As TestDll.Test
Set o = New TestDll.Text
MsgBox o.HelloWorld
54
ответ дан 27 November 2019 в 03:21
поделиться

And to expand on registering the DLL on different computers.

Once you compile and build the above code on your development machine, if you have

The project properties Build tab, select Register for COM interop.

your Visual Studio output folder (usually bin\Debug) where the compiled *.dll is found will also have a *.tlb file.

This *.tlb file is a 'Type Library'. And is needed by the client machine to understand the different 'Types' in your *.dll and to basically tell the client machine how to use it.

By setting the above 'Register for COM interop' -- aswell as a *.tlb file being produced, the assembly(dll) is registered on your machine, and is therefore accessible.

In VBA you can now add this file as a reference by

VBA Editor -> Tools -> References -> Browse -> Select

this will allow you to then declare the classes found in your library.

Dim TestClass As Test
Set TestClass = New Test
MsgBox TestClass.HelloWorld

HOWEVER - if you want to then use your dll on a different client machine, you will have to use regasm.exe - to register the assembly(dll) on that machine.

This can be done by the command line,

regasm.exe

in this case

regasm.exe TestDll.dll

once you have registered the assembly on the new client machine, you will be able to access it by again adding a reference to its *.tlb

Hope this helps!

23
ответ дан 27 November 2019 в 03:21
поделиться

Чтобы добавить к хорошему ответу AnthonyWJones, вам также необходимо зарегистрировать свою DLL с помощью Regasm.exe , который добавляет необходимые записи в реестр.

1
ответ дан 27 November 2019 в 03:21
поделиться
Другие вопросы по тегам:

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